/*
 *  ____  ____  _____              
 * |  _ \|  _ \|  ___|   _ ________
 * | |_) | |_) | |_ | | | |_  /_  /
 * |  _ <|  _ <|  _|| |_| |/ / / / 
 * |_| \_\_| \_\_|   \__,_/___/___|
 *
 * Copyright (C) National University of Singapore
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 * 
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 * 
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */

/****************************************************************************/
/* TLSH                                                                     */
/****************************************************************************/

/* ===========
 * BSD License
 * ===========
 * Copyright (c) 2013, Trend Micro Incorporated
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are
 * met:
 *
 * 1. Redistributions of source code must retain the above copyright notice,
 *    this list of conditions and the following disclaimer.
 *
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.

 * 3. Neither the name of the copyright holder nor the names of its
 *    contributors may be used to endorse or promote products derived from this
 *    software without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
 * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
 * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */

#define BUCKETS_128

#define TLSH_OPTION_CONSERVATIVE 2
#define TLSH_OPTION_KEEP_BUCKET  4
#define TLSH_OPTION_PRIVATE      8
#define TLSH_OPTION_THREADED     16

// Define TLSH_STRING_LEN_REQ, which is the string length of "T1" + the hex
// value of the Tlsh hash. BUCKETS_256 & CHECKSUM_3B are compiler switches
// defined in CMakeLists.txt
#if defined BUCKETS_256
    #define TLSH_STRING_LEN_REQ          136
    // changed the minimum data length to 256 for version 3.3
    #define MIN_DATA_LENGTH              50
    // added the -force option for version 3.5
    // added the -conservatibe option for version 3.17
    #define MIN_CONSERVATIVE_DATA_LENGTH 256
#endif

#if defined BUCKETS_128
    #define TLSH_STRING_LEN_REQ          72
    // changed the minimum data length to 256 for version 3.3
    #define MIN_DATA_LENGTH              50
    // added the -force option for version 3.5
    // added the -conservatibe option for version 3.17
    #define MIN_CONSERVATIVE_DATA_LENGTH 256
#endif

#if defined BUCKETS_48
    // No 3 Byte checksum option for 48 Bucket min hash
    #define TLSH_STRING_LEN              30
    // changed the minimum data length to 256 for version 3.3
    #define MIN_DATA_LENGTH              10
    // added the -force option for version 3.5
    #define MIN_CONSERVATIVE_DATA_LENGTH 10
#endif

#define TLSH_STRING_SIZE        (TLSH_STRING_LEN_REQ + 1)

typedef struct TlshImpl TlshImpl;
typedef struct Tlsh TLSH;

static int tlsh_update(Tlsh* tlsh, const uint8_t *data, size_t len);
static int tlsh_final(Tlsh* tlsh, const uint8_t *data, size_t len);

#define SLIDING_WND_SIZE 5

#define BUCKETS 256
#define Q_BITS  2 // 2 bits; quartile value 0, 1, 2, 3

// BUCKETS_256 & CHECKSUM_3B are compiler switches defined in CMakeLists.txt

#if defined BUCKETS_256
    #define EFF_BUCKETS 256
    #define CODE_SIZE   64 // 256 * 2 bits = 64 bytes
    #if defined CHECKSUM_3B
        #define INTERNAL_TLSH_STRING_LEN 138
        #define TLSH_CHECKSUM_LEN        3
    // defined in tlsh.h   #define TLSH_STRING_LEN   138  // 2 + 3 + 64 bytes = 138
    // hexidecimal chars
    #else
        #define INTERNAL_TLSH_STRING_LEN 134
        #define TLSH_CHECKSUM_LEN        1
    // defined in tlsh.h   #define TLSH_STRING_LEN   134  // 2 + 1 + 64 bytes = 134
    // hexidecimal chars
    #endif
#endif

#if defined BUCKETS_128
    #define EFF_BUCKETS 128
    #define CODE_SIZE   32 // 128 * 2 bits = 32 bytes
    #if defined CHECKSUM_3B
        #define INTERNAL_TLSH_STRING_LEN 74
        #define TLSH_CHECKSUM_LEN        3
    // defined in tlsh.h   #define TLSH_STRING_LEN   74   // 2 + 3 + 32 bytes = 74
    // hexidecimal chars
    #else
        #define INTERNAL_TLSH_STRING_LEN 70
        #define TLSH_CHECKSUM_LEN        1
    // defined in tlsh.h   #define TLSH_STRING_LEN   70   // 2 + 1 + 32 bytes = 70
    // hexidecimal chars
    #endif
#endif

#if defined BUCKETS_48
    #define INTERNAL_TLSH_STRING_LEN 33
    #define EFF_BUCKETS              48
    #define CODE_SIZE                12 // 48 * 2 bits = 12 bytes
    #define TLSH_CHECKSUM_LEN        1
// defined in tlsh.h   #define TLSH_STRING_LEN   30   // 2 + 1 + 12 bytes = 30
// hexidecimal chars
#endif

typedef struct {
    unsigned char checksum[TLSH_CHECKSUM_LEN];
    unsigned char lvalue;
    union {
        unsigned char qb;
        struct {
            unsigned char q1ratio : 4;
            unsigned char q2ratio : 4;
        } QR;
    } Q;
    unsigned char tmp_code[CODE_SIZE];
} LshBinStruct;

typedef struct TlshImpl {
    unsigned int a_bucket[BUCKETS];
    unsigned char slide_window[SLIDING_WND_SIZE];
    unsigned int data_len;
    LshBinStruct lsh_bin;
    char *lsh_code;
    bool lsh_code_valid;
} TlshImpl;

typedef struct Tlsh {
    TlshImpl impl;
} Tlsh;

static int tlsh_impl_update(TlshImpl *impl, const unsigned char *data, unsigned int len, int tlsh_option);
static void tlsh_impl_final(TlshImpl *impl, int fc_cons_option);
static void tlsh_impl_reset(TlshImpl *impl);
static int tlsh_impl_is_valid(TlshImpl *impl);
static int tlsh_impl_compare(TlshImpl *impl, TlshImpl *other);
static int tlsh_impl_total_diff(TlshImpl *impl, TlshImpl *other, bool len_diff);
static int tlsh_impl_lvalue(TlshImpl *impl);
static int tlsh_impl_q1ratio(TlshImpl *impl);
static int tlsh_impl_q2ratio(TlshImpl *impl);
static int tlsh_impl_checksum(TlshImpl *impl, int k);
static int tlsh_impl_bucket_value(TlshImpl *impl, int bucket);
static int tlsh_impl_histogram_count(TlshImpl *impl, int bucket);
static int tlsh_impl_from_tlsh_str(TlshImpl *impl, const char *str);
static int tlsh_impl_hash(TlshImpl *impl, bool showvers, char *str, size_t size);

static unsigned char bit_pairs_diff_table[][256] = {
    {0,  1,  2,  6,  1,  2,  3,  7,  2,  3,  4,  8,  6,  7,  8,  12, 1,  2,  3,  7,  2,  3,  4,  8,
     3,  4,  5,  9,  7,  8,  9,  13, 2,  3,  4,  8,  3,  4,  5,  9,  4,  5,  6,  10, 8,  9,  10, 14,
     6,  7,  8,  12, 7,  8,  9,  13, 8,  9,  10, 14, 12, 13, 14, 18, 1,  2,  3,  7,  2,  3,  4,  8,
     3,  4,  5,  9,  7,  8,  9,  13, 2,  3,  4,  8,  3,  4,  5,  9,  4,  5,  6,  10, 8,  9,  10, 14,
     3,  4,  5,  9,  4,  5,  6,  10, 5,  6,  7,  11, 9,  10, 11, 15, 7,  8,  9,  13, 8,  9,  10, 14,
     9,  10, 11, 15, 13, 14, 15, 19, 2,  3,  4,  8,  3,  4,  5,  9,  4,  5,  6,  10, 8,  9,  10, 14,
     3,  4,  5,  9,  4,  5,  6,  10, 5,  6,  7,  11, 9,  10, 11, 15, 4,  5,  6,  10, 5,  6,  7,  11,
     6,  7,  8,  12, 10, 11, 12, 16, 8,  9,  10, 14, 9,  10, 11, 15, 10, 11, 12, 16, 14, 15, 16, 20,
     6,  7,  8,  12, 7,  8,  9,  13, 8,  9,  10, 14, 12, 13, 14, 18, 7,  8,  9,  13, 8,  9,  10, 14,
     9,  10, 11, 15, 13, 14, 15, 19, 8,  9,  10, 14, 9,  10, 11, 15, 10, 11, 12, 16, 14, 15, 16, 20,
     12, 13, 14, 18, 13, 14, 15, 19, 14, 15, 16, 20, 18, 19, 20, 24},
    {1,  0,  1,  2,  2,  1,  2,  3,  3,  2,  3,  4,  7,  6,  7,  8,  2,  1,  2,  3,  3,  2,  3,  4,
     4,  3,  4,  5,  8,  7,  8,  9,  3,  2,  3,  4,  4,  3,  4,  5,  5,  4,  5,  6,  9,  8,  9,  10,
     7,  6,  7,  8,  8,  7,  8,  9,  9,  8,  9,  10, 13, 12, 13, 14, 2,  1,  2,  3,  3,  2,  3,  4,
     4,  3,  4,  5,  8,  7,  8,  9,  3,  2,  3,  4,  4,  3,  4,  5,  5,  4,  5,  6,  9,  8,  9,  10,
     4,  3,  4,  5,  5,  4,  5,  6,  6,  5,  6,  7,  10, 9,  10, 11, 8,  7,  8,  9,  9,  8,  9,  10,
     10, 9,  10, 11, 14, 13, 14, 15, 3,  2,  3,  4,  4,  3,  4,  5,  5,  4,  5,  6,  9,  8,  9,  10,
     4,  3,  4,  5,  5,  4,  5,  6,  6,  5,  6,  7,  10, 9,  10, 11, 5,  4,  5,  6,  6,  5,  6,  7,
     7,  6,  7,  8,  11, 10, 11, 12, 9,  8,  9,  10, 10, 9,  10, 11, 11, 10, 11, 12, 15, 14, 15, 16,
     7,  6,  7,  8,  8,  7,  8,  9,  9,  8,  9,  10, 13, 12, 13, 14, 8,  7,  8,  9,  9,  8,  9,  10,
     10, 9,  10, 11, 14, 13, 14, 15, 9,  8,  9,  10, 10, 9,  10, 11, 11, 10, 11, 12, 15, 14, 15, 16,
     13, 12, 13, 14, 14, 13, 14, 15, 15, 14, 15, 16, 19, 18, 19, 20},
    {2,  1,  0,  1,  3,  2,  1,  2,  4,  3,  2,  3,  8,  7,  6,  7,  3,  2,  1,  2,  4,  3,  2,  3,
     5,  4,  3,  4,  9,  8,  7,  8,  4,  3,  2,  3,  5,  4,  3,  4,  6,  5,  4,  5,  10, 9,  8,  9,
     8,  7,  6,  7,  9,  8,  7,  8,  10, 9,  8,  9,  14, 13, 12, 13, 3,  2,  1,  2,  4,  3,  2,  3,
     5,  4,  3,  4,  9,  8,  7,  8,  4,  3,  2,  3,  5,  4,  3,  4,  6,  5,  4,  5,  10, 9,  8,  9,
     5,  4,  3,  4,  6,  5,  4,  5,  7,  6,  5,  6,  11, 10, 9,  10, 9,  8,  7,  8,  10, 9,  8,  9,
     11, 10, 9,  10, 15, 14, 13, 14, 4,  3,  2,  3,  5,  4,  3,  4,  6,  5,  4,  5,  10, 9,  8,  9,
     5,  4,  3,  4,  6,  5,  4,  5,  7,  6,  5,  6,  11, 10, 9,  10, 6,  5,  4,  5,  7,  6,  5,  6,
     8,  7,  6,  7,  12, 11, 10, 11, 10, 9,  8,  9,  11, 10, 9,  10, 12, 11, 10, 11, 16, 15, 14, 15,
     8,  7,  6,  7,  9,  8,  7,  8,  10, 9,  8,  9,  14, 13, 12, 13, 9,  8,  7,  8,  10, 9,  8,  9,
     11, 10, 9,  10, 15, 14, 13, 14, 10, 9,  8,  9,  11, 10, 9,  10, 12, 11, 10, 11, 16, 15, 14, 15,
     14, 13, 12, 13, 15, 14, 13, 14, 16, 15, 14, 15, 20, 19, 18, 19},
    {6,  2,  1,  0,  7,  3,  2,  1,  8,  4,  3,  2,  12, 8,  7,  6,  7,  3,  2,  1,  8,  4,  3,  2,
     9,  5,  4,  3,  13, 9,  8,  7,  8,  4,  3,  2,  9,  5,  4,  3,  10, 6,  5,  4,  14, 10, 9,  8,
     12, 8,  7,  6,  13, 9,  8,  7,  14, 10, 9,  8,  18, 14, 13, 12, 7,  3,  2,  1,  8,  4,  3,  2,
     9,  5,  4,  3,  13, 9,  8,  7,  8,  4,  3,  2,  9,  5,  4,  3,  10, 6,  5,  4,  14, 10, 9,  8,
     9,  5,  4,  3,  10, 6,  5,  4,  11, 7,  6,  5,  15, 11, 10, 9,  13, 9,  8,  7,  14, 10, 9,  8,
     15, 11, 10, 9,  19, 15, 14, 13, 8,  4,  3,  2,  9,  5,  4,  3,  10, 6,  5,  4,  14, 10, 9,  8,
     9,  5,  4,  3,  10, 6,  5,  4,  11, 7,  6,  5,  15, 11, 10, 9,  10, 6,  5,  4,  11, 7,  6,  5,
     12, 8,  7,  6,  16, 12, 11, 10, 14, 10, 9,  8,  15, 11, 10, 9,  16, 12, 11, 10, 20, 16, 15, 14,
     12, 8,  7,  6,  13, 9,  8,  7,  14, 10, 9,  8,  18, 14, 13, 12, 13, 9,  8,  7,  14, 10, 9,  8,
     15, 11, 10, 9,  19, 15, 14, 13, 14, 10, 9,  8,  15, 11, 10, 9,  16, 12, 11, 10, 20, 16, 15, 14,
     18, 14, 13, 12, 19, 15, 14, 13, 20, 16, 15, 14, 24, 20, 19, 18},
    {1,  2,  3,  7,  0,  1,  2,  6,  1,  2,  3,  7,  2,  3,  4,  8,  2, 3,  4,  8,  1,  2,  3,  7,
     2,  3,  4,  8,  3,  4,  5,  9,  3,  4,  5,  9,  2,  3,  4,  8,  3, 4,  5,  9,  4,  5,  6,  10,
     7,  8,  9,  13, 6,  7,  8,  12, 7,  8,  9,  13, 8,  9,  10, 14, 2, 3,  4,  8,  1,  2,  3,  7,
     2,  3,  4,  8,  3,  4,  5,  9,  3,  4,  5,  9,  2,  3,  4,  8,  3, 4,  5,  9,  4,  5,  6,  10,
     4,  5,  6,  10, 3,  4,  5,  9,  4,  5,  6,  10, 5,  6,  7,  11, 8, 9,  10, 14, 7,  8,  9,  13,
     8,  9,  10, 14, 9,  10, 11, 15, 3,  4,  5,  9,  2,  3,  4,  8,  3, 4,  5,  9,  4,  5,  6,  10,
     4,  5,  6,  10, 3,  4,  5,  9,  4,  5,  6,  10, 5,  6,  7,  11, 5, 6,  7,  11, 4,  5,  6,  10,
     5,  6,  7,  11, 6,  7,  8,  12, 9,  10, 11, 15, 8,  9,  10, 14, 9, 10, 11, 15, 10, 11, 12, 16,
     7,  8,  9,  13, 6,  7,  8,  12, 7,  8,  9,  13, 8,  9,  10, 14, 8, 9,  10, 14, 7,  8,  9,  13,
     8,  9,  10, 14, 9,  10, 11, 15, 9,  10, 11, 15, 8,  9,  10, 14, 9, 10, 11, 15, 10, 11, 12, 16,
     13, 14, 15, 19, 12, 13, 14, 18, 13, 14, 15, 19, 14, 15, 16, 20},
    {2,  1,  2,  3,  1,  0,  1,  2,  2,  1,  2,  3,  3,  2,  3,  4,  3,  2, 3,  4,  2,  1,  2,  3,
     3,  2,  3,  4,  4,  3,  4,  5,  4,  3,  4,  5,  3,  2,  3,  4,  4,  3, 4,  5,  5,  4,  5,  6,
     8,  7,  8,  9,  7,  6,  7,  8,  8,  7,  8,  9,  9,  8,  9,  10, 3,  2, 3,  4,  2,  1,  2,  3,
     3,  2,  3,  4,  4,  3,  4,  5,  4,  3,  4,  5,  3,  2,  3,  4,  4,  3, 4,  5,  5,  4,  5,  6,
     5,  4,  5,  6,  4,  3,  4,  5,  5,  4,  5,  6,  6,  5,  6,  7,  9,  8, 9,  10, 8,  7,  8,  9,
     9,  8,  9,  10, 10, 9,  10, 11, 4,  3,  4,  5,  3,  2,  3,  4,  4,  3, 4,  5,  5,  4,  5,  6,
     5,  4,  5,  6,  4,  3,  4,  5,  5,  4,  5,  6,  6,  5,  6,  7,  6,  5, 6,  7,  5,  4,  5,  6,
     6,  5,  6,  7,  7,  6,  7,  8,  10, 9,  10, 11, 9,  8,  9,  10, 10, 9, 10, 11, 11, 10, 11, 12,
     8,  7,  8,  9,  7,  6,  7,  8,  8,  7,  8,  9,  9,  8,  9,  10, 9,  8, 9,  10, 8,  7,  8,  9,
     9,  8,  9,  10, 10, 9,  10, 11, 10, 9,  10, 11, 9,  8,  9,  10, 10, 9, 10, 11, 11, 10, 11, 12,
     14, 13, 14, 15, 13, 12, 13, 14, 14, 13, 14, 15, 15, 14, 15, 16},
    {3,  2,  1,  2,  2,  1,  0,  1,  3,  2,  1,  2,  4,  3,  2,  3, 4,  3,  2, 3,  3,  2,  1,  2,
     4,  3,  2,  3,  5,  4,  3,  4,  5,  4,  3,  4,  4,  3,  2,  3, 5,  4,  3, 4,  6,  5,  4,  5,
     9,  8,  7,  8,  8,  7,  6,  7,  9,  8,  7,  8,  10, 9,  8,  9, 4,  3,  2, 3,  3,  2,  1,  2,
     4,  3,  2,  3,  5,  4,  3,  4,  5,  4,  3,  4,  4,  3,  2,  3, 5,  4,  3, 4,  6,  5,  4,  5,
     6,  5,  4,  5,  5,  4,  3,  4,  6,  5,  4,  5,  7,  6,  5,  6, 10, 9,  8, 9,  9,  8,  7,  8,
     10, 9,  8,  9,  11, 10, 9,  10, 5,  4,  3,  4,  4,  3,  2,  3, 5,  4,  3, 4,  6,  5,  4,  5,
     6,  5,  4,  5,  5,  4,  3,  4,  6,  5,  4,  5,  7,  6,  5,  6, 7,  6,  5, 6,  6,  5,  4,  5,
     7,  6,  5,  6,  8,  7,  6,  7,  11, 10, 9,  10, 10, 9,  8,  9, 11, 10, 9, 10, 12, 11, 10, 11,
     9,  8,  7,  8,  8,  7,  6,  7,  9,  8,  7,  8,  10, 9,  8,  9, 10, 9,  8, 9,  9,  8,  7,  8,
     10, 9,  8,  9,  11, 10, 9,  10, 11, 10, 9,  10, 10, 9,  8,  9, 11, 10, 9, 10, 12, 11, 10, 11,
     15, 14, 13, 14, 14, 13, 12, 13, 15, 14, 13, 14, 16, 15, 14, 15},
    {7,  3,  2,  1,  6,  2,  1,  0,  7,  3,  2,  1,  8,  4,  3,  2, 8,  4,  3,  2, 7,  3,  2,  1,
     8,  4,  3,  2,  9,  5,  4,  3,  9,  5,  4,  3,  8,  4,  3,  2, 9,  5,  4,  3, 10, 6,  5,  4,
     13, 9,  8,  7,  12, 8,  7,  6,  13, 9,  8,  7,  14, 10, 9,  8, 8,  4,  3,  2, 7,  3,  2,  1,
     8,  4,  3,  2,  9,  5,  4,  3,  9,  5,  4,  3,  8,  4,  3,  2, 9,  5,  4,  3, 10, 6,  5,  4,
     10, 6,  5,  4,  9,  5,  4,  3,  10, 6,  5,  4,  11, 7,  6,  5, 14, 10, 9,  8, 13, 9,  8,  7,
     14, 10, 9,  8,  15, 11, 10, 9,  9,  5,  4,  3,  8,  4,  3,  2, 9,  5,  4,  3, 10, 6,  5,  4,
     10, 6,  5,  4,  9,  5,  4,  3,  10, 6,  5,  4,  11, 7,  6,  5, 11, 7,  6,  5, 10, 6,  5,  4,
     11, 7,  6,  5,  12, 8,  7,  6,  15, 11, 10, 9,  14, 10, 9,  8, 15, 11, 10, 9, 16, 12, 11, 10,
     13, 9,  8,  7,  12, 8,  7,  6,  13, 9,  8,  7,  14, 10, 9,  8, 14, 10, 9,  8, 13, 9,  8,  7,
     14, 10, 9,  8,  15, 11, 10, 9,  15, 11, 10, 9,  14, 10, 9,  8, 15, 11, 10, 9, 16, 12, 11, 10,
     19, 15, 14, 13, 18, 14, 13, 12, 19, 15, 14, 13, 20, 16, 15, 14},
    {2,  3,  4,  8,  1,  2,  3,  7,  0,  1,  2,  6,  1,  2,  3,  7,  3, 4,  5,  9,  2, 3,  4,  8,
     1,  2,  3,  7,  2,  3,  4,  8,  4,  5,  6,  10, 3,  4,  5,  9,  2, 3,  4,  8,  3, 4,  5,  9,
     8,  9,  10, 14, 7,  8,  9,  13, 6,  7,  8,  12, 7,  8,  9,  13, 3, 4,  5,  9,  2, 3,  4,  8,
     1,  2,  3,  7,  2,  3,  4,  8,  4,  5,  6,  10, 3,  4,  5,  9,  2, 3,  4,  8,  3, 4,  5,  9,
     5,  6,  7,  11, 4,  5,  6,  10, 3,  4,  5,  9,  4,  5,  6,  10, 9, 10, 11, 15, 8, 9,  10, 14,
     7,  8,  9,  13, 8,  9,  10, 14, 4,  5,  6,  10, 3,  4,  5,  9,  2, 3,  4,  8,  3, 4,  5,  9,
     5,  6,  7,  11, 4,  5,  6,  10, 3,  4,  5,  9,  4,  5,  6,  10, 6, 7,  8,  12, 5, 6,  7,  11,
     4,  5,  6,  10, 5,  6,  7,  11, 10, 11, 12, 16, 9,  10, 11, 15, 8, 9,  10, 14, 9, 10, 11, 15,
     8,  9,  10, 14, 7,  8,  9,  13, 6,  7,  8,  12, 7,  8,  9,  13, 9, 10, 11, 15, 8, 9,  10, 14,
     7,  8,  9,  13, 8,  9,  10, 14, 10, 11, 12, 16, 9,  10, 11, 15, 8, 9,  10, 14, 9, 10, 11, 15,
     14, 15, 16, 20, 13, 14, 15, 19, 12, 13, 14, 18, 13, 14, 15, 19},
    {3,  2,  3,  4,  2,  1,  2,  3,  1,  0,  1,  2,  2,  1,  2,  3,  4,  3, 4,  5,  3,  2, 3,  4,
     2,  1,  2,  3,  3,  2,  3,  4,  5,  4,  5,  6,  4,  3,  4,  5,  3,  2, 3,  4,  4,  3, 4,  5,
     9,  8,  9,  10, 8,  7,  8,  9,  7,  6,  7,  8,  8,  7,  8,  9,  4,  3, 4,  5,  3,  2, 3,  4,
     2,  1,  2,  3,  3,  2,  3,  4,  5,  4,  5,  6,  4,  3,  4,  5,  3,  2, 3,  4,  4,  3, 4,  5,
     6,  5,  6,  7,  5,  4,  5,  6,  4,  3,  4,  5,  5,  4,  5,  6,  10, 9, 10, 11, 9,  8, 9,  10,
     8,  7,  8,  9,  9,  8,  9,  10, 5,  4,  5,  6,  4,  3,  4,  5,  3,  2, 3,  4,  4,  3, 4,  5,
     6,  5,  6,  7,  5,  4,  5,  6,  4,  3,  4,  5,  5,  4,  5,  6,  7,  6, 7,  8,  6,  5, 6,  7,
     5,  4,  5,  6,  6,  5,  6,  7,  11, 10, 11, 12, 10, 9,  10, 11, 9,  8, 9,  10, 10, 9, 10, 11,
     9,  8,  9,  10, 8,  7,  8,  9,  7,  6,  7,  8,  8,  7,  8,  9,  10, 9, 10, 11, 9,  8, 9,  10,
     8,  7,  8,  9,  9,  8,  9,  10, 11, 10, 11, 12, 10, 9,  10, 11, 9,  8, 9,  10, 10, 9, 10, 11,
     15, 14, 15, 16, 14, 13, 14, 15, 13, 12, 13, 14, 14, 13, 14, 15},
    {4,  3,  2,  3,  3,  2,  1,  2,  2,  1,  0,  1,  3,  2,  1,  2,  5,  4,  3, 4,  4,  3,  2, 3,
     3,  2,  1,  2,  4,  3,  2,  3,  6,  5,  4,  5,  5,  4,  3,  4,  4,  3,  2, 3,  5,  4,  3, 4,
     10, 9,  8,  9,  9,  8,  7,  8,  8,  7,  6,  7,  9,  8,  7,  8,  5,  4,  3, 4,  4,  3,  2, 3,
     3,  2,  1,  2,  4,  3,  2,  3,  6,  5,  4,  5,  5,  4,  3,  4,  4,  3,  2, 3,  5,  4,  3, 4,
     7,  6,  5,  6,  6,  5,  4,  5,  5,  4,  3,  4,  6,  5,  4,  5,  11, 10, 9, 10, 10, 9,  8, 9,
     9,  8,  7,  8,  10, 9,  8,  9,  6,  5,  4,  5,  5,  4,  3,  4,  4,  3,  2, 3,  5,  4,  3, 4,
     7,  6,  5,  6,  6,  5,  4,  5,  5,  4,  3,  4,  6,  5,  4,  5,  8,  7,  6, 7,  7,  6,  5, 6,
     6,  5,  4,  5,  7,  6,  5,  6,  12, 11, 10, 11, 11, 10, 9,  10, 10, 9,  8, 9,  11, 10, 9, 10,
     10, 9,  8,  9,  9,  8,  7,  8,  8,  7,  6,  7,  9,  8,  7,  8,  11, 10, 9, 10, 10, 9,  8, 9,
     9,  8,  7,  8,  10, 9,  8,  9,  12, 11, 10, 11, 11, 10, 9,  10, 10, 9,  8, 9,  11, 10, 9, 10,
     16, 15, 14, 15, 15, 14, 13, 14, 14, 13, 12, 13, 15, 14, 13, 14},
    {8,  4,  3,  2,  7,  3,  2,  1,  6,  2,  1,  0,  7,  3,  2,  1, 9,  5,  4,  3, 8,  4,  3,  2,
     7,  3,  2,  1,  8,  4,  3,  2,  10, 6,  5,  4,  9,  5,  4,  3, 8,  4,  3,  2, 9,  5,  4,  3,
     14, 10, 9,  8,  13, 9,  8,  7,  12, 8,  7,  6,  13, 9,  8,  7, 9,  5,  4,  3, 8,  4,  3,  2,
     7,  3,  2,  1,  8,  4,  3,  2,  10, 6,  5,  4,  9,  5,  4,  3, 8,  4,  3,  2, 9,  5,  4,  3,
     11, 7,  6,  5,  10, 6,  5,  4,  9,  5,  4,  3,  10, 6,  5,  4, 15, 11, 10, 9, 14, 10, 9,  8,
     13, 9,  8,  7,  14, 10, 9,  8,  10, 6,  5,  4,  9,  5,  4,  3, 8,  4,  3,  2, 9,  5,  4,  3,
     11, 7,  6,  5,  10, 6,  5,  4,  9,  5,  4,  3,  10, 6,  5,  4, 12, 8,  7,  6, 11, 7,  6,  5,
     10, 6,  5,  4,  11, 7,  6,  5,  16, 12, 11, 10, 15, 11, 10, 9, 14, 10, 9,  8, 15, 11, 10, 9,
     14, 10, 9,  8,  13, 9,  8,  7,  12, 8,  7,  6,  13, 9,  8,  7, 15, 11, 10, 9, 14, 10, 9,  8,
     13, 9,  8,  7,  14, 10, 9,  8,  16, 12, 11, 10, 15, 11, 10, 9, 14, 10, 9,  8, 15, 11, 10, 9,
     20, 16, 15, 14, 19, 15, 14, 13, 18, 14, 13, 12, 19, 15, 14, 13},
    {6,  7,  8,  12, 2,  3,  4,  8,  1,  2,  3,  7,  0,  1,  2,  6,  7,  8,  9,  13, 3, 4,  5,  9,
     2,  3,  4,  8,  1,  2,  3,  7,  8,  9,  10, 14, 4,  5,  6,  10, 3,  4,  5,  9,  2, 3,  4,  8,
     12, 13, 14, 18, 8,  9,  10, 14, 7,  8,  9,  13, 6,  7,  8,  12, 7,  8,  9,  13, 3, 4,  5,  9,
     2,  3,  4,  8,  1,  2,  3,  7,  8,  9,  10, 14, 4,  5,  6,  10, 3,  4,  5,  9,  2, 3,  4,  8,
     9,  10, 11, 15, 5,  6,  7,  11, 4,  5,  6,  10, 3,  4,  5,  9,  13, 14, 15, 19, 9, 10, 11, 15,
     8,  9,  10, 14, 7,  8,  9,  13, 8,  9,  10, 14, 4,  5,  6,  10, 3,  4,  5,  9,  2, 3,  4,  8,
     9,  10, 11, 15, 5,  6,  7,  11, 4,  5,  6,  10, 3,  4,  5,  9,  10, 11, 12, 16, 6, 7,  8,  12,
     5,  6,  7,  11, 4,  5,  6,  10, 14, 15, 16, 20, 10, 11, 12, 16, 9,  10, 11, 15, 8, 9,  10, 14,
     12, 13, 14, 18, 8,  9,  10, 14, 7,  8,  9,  13, 6,  7,  8,  12, 13, 14, 15, 19, 9, 10, 11, 15,
     8,  9,  10, 14, 7,  8,  9,  13, 14, 15, 16, 20, 10, 11, 12, 16, 9,  10, 11, 15, 8, 9,  10, 14,
     18, 19, 20, 24, 14, 15, 16, 20, 13, 14, 15, 19, 12, 13, 14, 18},
    {7,  6,  7,  8,  3,  2,  3,  4,  2,  1,  2,  3,  1,  0,  1,  2,  8,  7,  8,  9,  4,  3, 4,  5,
     3,  2,  3,  4,  2,  1,  2,  3,  9,  8,  9,  10, 5,  4,  5,  6,  4,  3,  4,  5,  3,  2, 3,  4,
     13, 12, 13, 14, 9,  8,  9,  10, 8,  7,  8,  9,  7,  6,  7,  8,  8,  7,  8,  9,  4,  3, 4,  5,
     3,  2,  3,  4,  2,  1,  2,  3,  9,  8,  9,  10, 5,  4,  5,  6,  4,  3,  4,  5,  3,  2, 3,  4,
     10, 9,  10, 11, 6,  5,  6,  7,  5,  4,  5,  6,  4,  3,  4,  5,  14, 13, 14, 15, 10, 9, 10, 11,
     9,  8,  9,  10, 8,  7,  8,  9,  9,  8,  9,  10, 5,  4,  5,  6,  4,  3,  4,  5,  3,  2, 3,  4,
     10, 9,  10, 11, 6,  5,  6,  7,  5,  4,  5,  6,  4,  3,  4,  5,  11, 10, 11, 12, 7,  6, 7,  8,
     6,  5,  6,  7,  5,  4,  5,  6,  15, 14, 15, 16, 11, 10, 11, 12, 10, 9,  10, 11, 9,  8, 9,  10,
     13, 12, 13, 14, 9,  8,  9,  10, 8,  7,  8,  9,  7,  6,  7,  8,  14, 13, 14, 15, 10, 9, 10, 11,
     9,  8,  9,  10, 8,  7,  8,  9,  15, 14, 15, 16, 11, 10, 11, 12, 10, 9,  10, 11, 9,  8, 9,  10,
     19, 18, 19, 20, 15, 14, 15, 16, 14, 13, 14, 15, 13, 12, 13, 14},
    {8,  7,  6,  7,  4,  3,  2,  3,  3,  2,  1,  2,  2,  1,  0,  1,  9,  8,  7,  8,  5,  4,  3, 4,
     4,  3,  2,  3,  3,  2,  1,  2,  10, 9,  8,  9,  6,  5,  4,  5,  5,  4,  3,  4,  4,  3,  2, 3,
     14, 13, 12, 13, 10, 9,  8,  9,  9,  8,  7,  8,  8,  7,  6,  7,  9,  8,  7,  8,  5,  4,  3, 4,
     4,  3,  2,  3,  3,  2,  1,  2,  10, 9,  8,  9,  6,  5,  4,  5,  5,  4,  3,  4,  4,  3,  2, 3,
     11, 10, 9,  10, 7,  6,  5,  6,  6,  5,  4,  5,  5,  4,  3,  4,  15, 14, 13, 14, 11, 10, 9, 10,
     10, 9,  8,  9,  9,  8,  7,  8,  10, 9,  8,  9,  6,  5,  4,  5,  5,  4,  3,  4,  4,  3,  2, 3,
     11, 10, 9,  10, 7,  6,  5,  6,  6,  5,  4,  5,  5,  4,  3,  4,  12, 11, 10, 11, 8,  7,  6, 7,
     7,  6,  5,  6,  6,  5,  4,  5,  16, 15, 14, 15, 12, 11, 10, 11, 11, 10, 9,  10, 10, 9,  8, 9,
     14, 13, 12, 13, 10, 9,  8,  9,  9,  8,  7,  8,  8,  7,  6,  7,  15, 14, 13, 14, 11, 10, 9, 10,
     10, 9,  8,  9,  9,  8,  7,  8,  16, 15, 14, 15, 12, 11, 10, 11, 11, 10, 9,  10, 10, 9,  8, 9,
     20, 19, 18, 19, 16, 15, 14, 15, 15, 14, 13, 14, 14, 13, 12, 13},
    {12, 8,  7,  6,  8,  4,  3,  2,  7,  3,  2,  1,  6,  2,  1,  0,  13, 9,  8,  7,  9,  5,  4,  3,
     8,  4,  3,  2,  7,  3,  2,  1,  14, 10, 9,  8,  10, 6,  5,  4,  9,  5,  4,  3,  8,  4,  3,  2,
     18, 14, 13, 12, 14, 10, 9,  8,  13, 9,  8,  7,  12, 8,  7,  6,  13, 9,  8,  7,  9,  5,  4,  3,
     8,  4,  3,  2,  7,  3,  2,  1,  14, 10, 9,  8,  10, 6,  5,  4,  9,  5,  4,  3,  8,  4,  3,  2,
     15, 11, 10, 9,  11, 7,  6,  5,  10, 6,  5,  4,  9,  5,  4,  3,  19, 15, 14, 13, 15, 11, 10, 9,
     14, 10, 9,  8,  13, 9,  8,  7,  14, 10, 9,  8,  10, 6,  5,  4,  9,  5,  4,  3,  8,  4,  3,  2,
     15, 11, 10, 9,  11, 7,  6,  5,  10, 6,  5,  4,  9,  5,  4,  3,  16, 12, 11, 10, 12, 8,  7,  6,
     11, 7,  6,  5,  10, 6,  5,  4,  20, 16, 15, 14, 16, 12, 11, 10, 15, 11, 10, 9,  14, 10, 9,  8,
     18, 14, 13, 12, 14, 10, 9,  8,  13, 9,  8,  7,  12, 8,  7,  6,  19, 15, 14, 13, 15, 11, 10, 9,
     14, 10, 9,  8,  13, 9,  8,  7,  20, 16, 15, 14, 16, 12, 11, 10, 15, 11, 10, 9,  14, 10, 9,  8,
     24, 20, 19, 18, 20, 16, 15, 14, 19, 15, 14, 13, 18, 14, 13, 12},
    {1, 2, 3,  7,  2,  3,  4,  8,  3,  4,  5,  9,  7,  8,  9,  13, 0, 1,  2,  6,  1,  2,  3,  7,
     2, 3, 4,  8,  6,  7,  8,  12, 1,  2,  3,  7,  2,  3,  4,  8,  3, 4,  5,  9,  7,  8,  9,  13,
     2, 3, 4,  8,  3,  4,  5,  9,  4,  5,  6,  10, 8,  9,  10, 14, 2, 3,  4,  8,  3,  4,  5,  9,
     4, 5, 6,  10, 8,  9,  10, 14, 1,  2,  3,  7,  2,  3,  4,  8,  3, 4,  5,  9,  7,  8,  9,  13,
     2, 3, 4,  8,  3,  4,  5,  9,  4,  5,  6,  10, 8,  9,  10, 14, 3, 4,  5,  9,  4,  5,  6,  10,
     5, 6, 7,  11, 9,  10, 11, 15, 3,  4,  5,  9,  4,  5,  6,  10, 5, 6,  7,  11, 9,  10, 11, 15,
     2, 3, 4,  8,  3,  4,  5,  9,  4,  5,  6,  10, 8,  9,  10, 14, 3, 4,  5,  9,  4,  5,  6,  10,
     5, 6, 7,  11, 9,  10, 11, 15, 4,  5,  6,  10, 5,  6,  7,  11, 6, 7,  8,  12, 10, 11, 12, 16,
     7, 8, 9,  13, 8,  9,  10, 14, 9,  10, 11, 15, 13, 14, 15, 19, 6, 7,  8,  12, 7,  8,  9,  13,
     8, 9, 10, 14, 12, 13, 14, 18, 7,  8,  9,  13, 8,  9,  10, 14, 9, 10, 11, 15, 13, 14, 15, 19,
     8, 9, 10, 14, 9,  10, 11, 15, 10, 11, 12, 16, 14, 15, 16, 20},
    {2, 1, 2, 3,  3,  2,  3,  4,  4,  3,  4,  5,  8,  7,  8,  9,  1,  0, 1,  2,  2,  1,  2,  3,
     3, 2, 3, 4,  7,  6,  7,  8,  2,  1,  2,  3,  3,  2,  3,  4,  4,  3, 4,  5,  8,  7,  8,  9,
     3, 2, 3, 4,  4,  3,  4,  5,  5,  4,  5,  6,  9,  8,  9,  10, 3,  2, 3,  4,  4,  3,  4,  5,
     5, 4, 5, 6,  9,  8,  9,  10, 2,  1,  2,  3,  3,  2,  3,  4,  4,  3, 4,  5,  8,  7,  8,  9,
     3, 2, 3, 4,  4,  3,  4,  5,  5,  4,  5,  6,  9,  8,  9,  10, 4,  3, 4,  5,  5,  4,  5,  6,
     6, 5, 6, 7,  10, 9,  10, 11, 4,  3,  4,  5,  5,  4,  5,  6,  6,  5, 6,  7,  10, 9,  10, 11,
     3, 2, 3, 4,  4,  3,  4,  5,  5,  4,  5,  6,  9,  8,  9,  10, 4,  3, 4,  5,  5,  4,  5,  6,
     6, 5, 6, 7,  10, 9,  10, 11, 5,  4,  5,  6,  6,  5,  6,  7,  7,  6, 7,  8,  11, 10, 11, 12,
     8, 7, 8, 9,  9,  8,  9,  10, 10, 9,  10, 11, 14, 13, 14, 15, 7,  6, 7,  8,  8,  7,  8,  9,
     9, 8, 9, 10, 13, 12, 13, 14, 8,  7,  8,  9,  9,  8,  9,  10, 10, 9, 10, 11, 14, 13, 14, 15,
     9, 8, 9, 10, 10, 9,  10, 11, 11, 10, 11, 12, 15, 14, 15, 16},
    {3,  2, 1, 2, 4,  3,  2,  3,  5,  4,  3,  4,  9,  8,  7,  8,  2,  1,  0, 1,  3,  2,  1,  2,
     4,  3, 2, 3, 8,  7,  6,  7,  3,  2,  1,  2,  4,  3,  2,  3,  5,  4,  3, 4,  9,  8,  7,  8,
     4,  3, 2, 3, 5,  4,  3,  4,  6,  5,  4,  5,  10, 9,  8,  9,  4,  3,  2, 3,  5,  4,  3,  4,
     6,  5, 4, 5, 10, 9,  8,  9,  3,  2,  1,  2,  4,  3,  2,  3,  5,  4,  3, 4,  9,  8,  7,  8,
     4,  3, 2, 3, 5,  4,  3,  4,  6,  5,  4,  5,  10, 9,  8,  9,  5,  4,  3, 4,  6,  5,  4,  5,
     7,  6, 5, 6, 11, 10, 9,  10, 5,  4,  3,  4,  6,  5,  4,  5,  7,  6,  5, 6,  11, 10, 9,  10,
     4,  3, 2, 3, 5,  4,  3,  4,  6,  5,  4,  5,  10, 9,  8,  9,  5,  4,  3, 4,  6,  5,  4,  5,
     7,  6, 5, 6, 11, 10, 9,  10, 6,  5,  4,  5,  7,  6,  5,  6,  8,  7,  6, 7,  12, 11, 10, 11,
     9,  8, 7, 8, 10, 9,  8,  9,  11, 10, 9,  10, 15, 14, 13, 14, 8,  7,  6, 7,  9,  8,  7,  8,
     10, 9, 8, 9, 14, 13, 12, 13, 9,  8,  7,  8,  10, 9,  8,  9,  11, 10, 9, 10, 15, 14, 13, 14,
     10, 9, 8, 9, 11, 10, 9,  10, 12, 11, 10, 11, 16, 15, 14, 15},
    {7,  3,  2, 1, 8,  4,  3,  2,  9,  5,  4,  3,  13, 9,  8,  7,  6,  2,  1,  0, 7,  3,  2,  1,
     8,  4,  3, 2, 12, 8,  7,  6,  7,  3,  2,  1,  8,  4,  3,  2,  9,  5,  4,  3, 13, 9,  8,  7,
     8,  4,  3, 2, 9,  5,  4,  3,  10, 6,  5,  4,  14, 10, 9,  8,  8,  4,  3,  2, 9,  5,  4,  3,
     10, 6,  5, 4, 14, 10, 9,  8,  7,  3,  2,  1,  8,  4,  3,  2,  9,  5,  4,  3, 13, 9,  8,  7,
     8,  4,  3, 2, 9,  5,  4,  3,  10, 6,  5,  4,  14, 10, 9,  8,  9,  5,  4,  3, 10, 6,  5,  4,
     11, 7,  6, 5, 15, 11, 10, 9,  9,  5,  4,  3,  10, 6,  5,  4,  11, 7,  6,  5, 15, 11, 10, 9,
     8,  4,  3, 2, 9,  5,  4,  3,  10, 6,  5,  4,  14, 10, 9,  8,  9,  5,  4,  3, 10, 6,  5,  4,
     11, 7,  6, 5, 15, 11, 10, 9,  10, 6,  5,  4,  11, 7,  6,  5,  12, 8,  7,  6, 16, 12, 11, 10,
     13, 9,  8, 7, 14, 10, 9,  8,  15, 11, 10, 9,  19, 15, 14, 13, 12, 8,  7,  6, 13, 9,  8,  7,
     14, 10, 9, 8, 18, 14, 13, 12, 13, 9,  8,  7,  14, 10, 9,  8,  15, 11, 10, 9, 19, 15, 14, 13,
     14, 10, 9, 8, 15, 11, 10, 9,  16, 12, 11, 10, 20, 16, 15, 14},
    {2, 3,  4,  8,  1, 2, 3,  7,  2, 3,  4,  8,  3,  4,  5,  9,  1, 2, 3,  7,  0, 1,  2,  6,
     1, 2,  3,  7,  2, 3, 4,  8,  2, 3,  4,  8,  1,  2,  3,  7,  2, 3, 4,  8,  3, 4,  5,  9,
     3, 4,  5,  9,  2, 3, 4,  8,  3, 4,  5,  9,  4,  5,  6,  10, 3, 4, 5,  9,  2, 3,  4,  8,
     3, 4,  5,  9,  4, 5, 6,  10, 2, 3,  4,  8,  1,  2,  3,  7,  2, 3, 4,  8,  3, 4,  5,  9,
     3, 4,  5,  9,  2, 3, 4,  8,  3, 4,  5,  9,  4,  5,  6,  10, 4, 5, 6,  10, 3, 4,  5,  9,
     4, 5,  6,  10, 5, 6, 7,  11, 4, 5,  6,  10, 3,  4,  5,  9,  4, 5, 6,  10, 5, 6,  7,  11,
     3, 4,  5,  9,  2, 3, 4,  8,  3, 4,  5,  9,  4,  5,  6,  10, 4, 5, 6,  10, 3, 4,  5,  9,
     4, 5,  6,  10, 5, 6, 7,  11, 5, 6,  7,  11, 4,  5,  6,  10, 5, 6, 7,  11, 6, 7,  8,  12,
     8, 9,  10, 14, 7, 8, 9,  13, 8, 9,  10, 14, 9,  10, 11, 15, 7, 8, 9,  13, 6, 7,  8,  12,
     7, 8,  9,  13, 8, 9, 10, 14, 8, 9,  10, 14, 7,  8,  9,  13, 8, 9, 10, 14, 9, 10, 11, 15,
     9, 10, 11, 15, 8, 9, 10, 14, 9, 10, 11, 15, 10, 11, 12, 16},
    {3,  2, 3,  4,  2, 1, 2, 3,  3,  2, 3,  4,  4,  3,  4,  5,  2, 1, 2, 3,  1,  0, 1,  2,
     2,  1, 2,  3,  3, 2, 3, 4,  3,  2, 3,  4,  2,  1,  2,  3,  3, 2, 3, 4,  4,  3, 4,  5,
     4,  3, 4,  5,  3, 2, 3, 4,  4,  3, 4,  5,  5,  4,  5,  6,  4, 3, 4, 5,  3,  2, 3,  4,
     4,  3, 4,  5,  5, 4, 5, 6,  3,  2, 3,  4,  2,  1,  2,  3,  3, 2, 3, 4,  4,  3, 4,  5,
     4,  3, 4,  5,  3, 2, 3, 4,  4,  3, 4,  5,  5,  4,  5,  6,  5, 4, 5, 6,  4,  3, 4,  5,
     5,  4, 5,  6,  6, 5, 6, 7,  5,  4, 5,  6,  4,  3,  4,  5,  5, 4, 5, 6,  6,  5, 6,  7,
     4,  3, 4,  5,  3, 2, 3, 4,  4,  3, 4,  5,  5,  4,  5,  6,  5, 4, 5, 6,  4,  3, 4,  5,
     5,  4, 5,  6,  6, 5, 6, 7,  6,  5, 6,  7,  5,  4,  5,  6,  6, 5, 6, 7,  7,  6, 7,  8,
     9,  8, 9,  10, 8, 7, 8, 9,  9,  8, 9,  10, 10, 9,  10, 11, 8, 7, 8, 9,  7,  6, 7,  8,
     8,  7, 8,  9,  9, 8, 9, 10, 9,  8, 9,  10, 8,  7,  8,  9,  9, 8, 9, 10, 10, 9, 10, 11,
     10, 9, 10, 11, 9, 8, 9, 10, 10, 9, 10, 11, 11, 10, 11, 12},
    {4,  3,  2, 3,  3,  2, 1, 2, 4,  3,  2, 3,  5,  4,  3,  4,  3,  2, 1, 2, 2,  1,  0, 1,
     3,  2,  1, 2,  4,  3, 2, 3, 4,  3,  2, 3,  3,  2,  1,  2,  4,  3, 2, 3, 5,  4,  3, 4,
     5,  4,  3, 4,  4,  3, 2, 3, 5,  4,  3, 4,  6,  5,  4,  5,  5,  4, 3, 4, 4,  3,  2, 3,
     5,  4,  3, 4,  6,  5, 4, 5, 4,  3,  2, 3,  3,  2,  1,  2,  4,  3, 2, 3, 5,  4,  3, 4,
     5,  4,  3, 4,  4,  3, 2, 3, 5,  4,  3, 4,  6,  5,  4,  5,  6,  5, 4, 5, 5,  4,  3, 4,
     6,  5,  4, 5,  7,  6, 5, 6, 6,  5,  4, 5,  5,  4,  3,  4,  6,  5, 4, 5, 7,  6,  5, 6,
     5,  4,  3, 4,  4,  3, 2, 3, 5,  4,  3, 4,  6,  5,  4,  5,  6,  5, 4, 5, 5,  4,  3, 4,
     6,  5,  4, 5,  7,  6, 5, 6, 7,  6,  5, 6,  6,  5,  4,  5,  7,  6, 5, 6, 8,  7,  6, 7,
     10, 9,  8, 9,  9,  8, 7, 8, 10, 9,  8, 9,  11, 10, 9,  10, 9,  8, 7, 8, 8,  7,  6, 7,
     9,  8,  7, 8,  10, 9, 8, 9, 10, 9,  8, 9,  9,  8,  7,  8,  10, 9, 8, 9, 11, 10, 9, 10,
     11, 10, 9, 10, 10, 9, 8, 9, 11, 10, 9, 10, 12, 11, 10, 11},
    {8,  4,  3,  2, 7,  3,  2, 1, 8,  4,  3,  2, 9,  5,  4,  3, 7,  3,  2, 1, 6,  2,  1,  0,
     7,  3,  2,  1, 8,  4,  3, 2, 8,  4,  3,  2, 7,  3,  2,  1, 8,  4,  3, 2, 9,  5,  4,  3,
     9,  5,  4,  3, 8,  4,  3, 2, 9,  5,  4,  3, 10, 6,  5,  4, 9,  5,  4, 3, 8,  4,  3,  2,
     9,  5,  4,  3, 10, 6,  5, 4, 8,  4,  3,  2, 7,  3,  2,  1, 8,  4,  3, 2, 9,  5,  4,  3,
     9,  5,  4,  3, 8,  4,  3, 2, 9,  5,  4,  3, 10, 6,  5,  4, 10, 6,  5, 4, 9,  5,  4,  3,
     10, 6,  5,  4, 11, 7,  6, 5, 10, 6,  5,  4, 9,  5,  4,  3, 10, 6,  5, 4, 11, 7,  6,  5,
     9,  5,  4,  3, 8,  4,  3, 2, 9,  5,  4,  3, 10, 6,  5,  4, 10, 6,  5, 4, 9,  5,  4,  3,
     10, 6,  5,  4, 11, 7,  6, 5, 11, 7,  6,  5, 10, 6,  5,  4, 11, 7,  6, 5, 12, 8,  7,  6,
     14, 10, 9,  8, 13, 9,  8, 7, 14, 10, 9,  8, 15, 11, 10, 9, 13, 9,  8, 7, 12, 8,  7,  6,
     13, 9,  8,  7, 14, 10, 9, 8, 14, 10, 9,  8, 13, 9,  8,  7, 14, 10, 9, 8, 15, 11, 10, 9,
     15, 11, 10, 9, 14, 10, 9, 8, 15, 11, 10, 9, 16, 12, 11, 10},
    {3,  4,  5,  9,  2, 3,  4,  8,  1, 2,  3,  7,  2, 3,  4,  8,  2, 3, 4,  8,  1, 2, 3,  7,
     0,  1,  2,  6,  1, 2,  3,  7,  3, 4,  5,  9,  2, 3,  4,  8,  1, 2, 3,  7,  2, 3, 4,  8,
     4,  5,  6,  10, 3, 4,  5,  9,  2, 3,  4,  8,  3, 4,  5,  9,  4, 5, 6,  10, 3, 4, 5,  9,
     2,  3,  4,  8,  3, 4,  5,  9,  3, 4,  5,  9,  2, 3,  4,  8,  1, 2, 3,  7,  2, 3, 4,  8,
     4,  5,  6,  10, 3, 4,  5,  9,  2, 3,  4,  8,  3, 4,  5,  9,  5, 6, 7,  11, 4, 5, 6,  10,
     3,  4,  5,  9,  4, 5,  6,  10, 5, 6,  7,  11, 4, 5,  6,  10, 3, 4, 5,  9,  4, 5, 6,  10,
     4,  5,  6,  10, 3, 4,  5,  9,  2, 3,  4,  8,  3, 4,  5,  9,  5, 6, 7,  11, 4, 5, 6,  10,
     3,  4,  5,  9,  4, 5,  6,  10, 6, 7,  8,  12, 5, 6,  7,  11, 4, 5, 6,  10, 5, 6, 7,  11,
     9,  10, 11, 15, 8, 9,  10, 14, 7, 8,  9,  13, 8, 9,  10, 14, 8, 9, 10, 14, 7, 8, 9,  13,
     6,  7,  8,  12, 7, 8,  9,  13, 9, 10, 11, 15, 8, 9,  10, 14, 7, 8, 9,  13, 8, 9, 10, 14,
     10, 11, 12, 16, 9, 10, 11, 15, 8, 9,  10, 14, 9, 10, 11, 15},
    {4, 3, 4, 5,  3, 2,  3,  4,  2,  1,  2,  3, 3,  2,  3, 4, 3,  2,  3,  4,  2,  1, 2, 3,  1, 0,
     1, 2, 2, 1,  2, 3,  4,  3,  4,  5,  3,  2, 3,  4,  2, 1, 2,  3,  3,  2,  3,  4, 5, 4,  5, 6,
     4, 3, 4, 5,  3, 2,  3,  4,  4,  3,  4,  5, 5,  4,  5, 6, 4,  3,  4,  5,  3,  2, 3, 4,  4, 3,
     4, 5, 4, 3,  4, 5,  3,  2,  3,  4,  2,  1, 2,  3,  3, 2, 3,  4,  5,  4,  5,  6, 4, 3,  4, 5,
     3, 2, 3, 4,  4, 3,  4,  5,  6,  5,  6,  7, 5,  4,  5, 6, 4,  3,  4,  5,  5,  4, 5, 6,  6, 5,
     6, 7, 5, 4,  5, 6,  4,  3,  4,  5,  5,  4, 5,  6,  5, 4, 5,  6,  4,  3,  4,  5, 3, 2,  3, 4,
     4, 3, 4, 5,  6, 5,  6,  7,  5,  4,  5,  6, 4,  3,  4, 5, 5,  4,  5,  6,  7,  6, 7, 8,  6, 5,
     6, 7, 5, 4,  5, 6,  6,  5,  6,  7,  10, 9, 10, 11, 9, 8, 9,  10, 8,  7,  8,  9, 9, 8,  9, 10,
     9, 8, 9, 10, 8, 7,  8,  9,  7,  6,  7,  8, 8,  7,  8, 9, 10, 9,  10, 11, 9,  8, 9, 10, 8, 7,
     8, 9, 9, 8,  9, 10, 11, 10, 11, 12, 10, 9, 10, 11, 9, 8, 9,  10, 10, 9,  10, 11},
    {5,  4, 3,  4, 4, 3, 2,  3,  3,  2,  1,  2,  4, 3,  2,  3, 4,  3,  2,  3,  3,  2, 1,  2, 2, 1,
     0,  1, 3,  2, 1, 2, 5,  4,  3,  4,  4,  3,  2, 3,  3,  2, 1,  2,  4,  3,  2,  3, 6,  5, 4, 5,
     5,  4, 3,  4, 4, 3, 2,  3,  5,  4,  3,  4,  6, 5,  4,  5, 5,  4,  3,  4,  4,  3, 2,  3, 5, 4,
     3,  4, 5,  4, 3, 4, 4,  3,  2,  3,  3,  2,  1, 2,  4,  3, 2,  3,  6,  5,  4,  5, 5,  4, 3, 4,
     4,  3, 2,  3, 5, 4, 3,  4,  7,  6,  5,  6,  6, 5,  4,  5, 5,  4,  3,  4,  6,  5, 4,  5, 7, 6,
     5,  6, 6,  5, 4, 5, 5,  4,  3,  4,  6,  5,  4, 5,  6,  5, 4,  5,  5,  4,  3,  4, 4,  3, 2, 3,
     5,  4, 3,  4, 7, 6, 5,  6,  6,  5,  4,  5,  5, 4,  3,  4, 6,  5,  4,  5,  8,  7, 6,  7, 7, 6,
     5,  6, 6,  5, 4, 5, 7,  6,  5,  6,  11, 10, 9, 10, 10, 9, 8,  9,  9,  8,  7,  8, 10, 9, 8, 9,
     10, 9, 8,  9, 9, 8, 7,  8,  8,  7,  6,  7,  9, 8,  7,  8, 11, 10, 9,  10, 10, 9, 8,  9, 9, 8,
     7,  8, 10, 9, 8, 9, 12, 11, 10, 11, 11, 10, 9, 10, 10, 9, 8,  9,  11, 10, 9,  10},
    {9,  5,  4,  3,  8,  4,  3,  2, 7,  3,  2,  1, 8,  4,  3,  2, 8,  4,  3, 2, 7,  3,  2, 1,
     6,  2,  1,  0,  7,  3,  2,  1, 9,  5,  4,  3, 8,  4,  3,  2, 7,  3,  2, 1, 8,  4,  3, 2,
     10, 6,  5,  4,  9,  5,  4,  3, 8,  4,  3,  2, 9,  5,  4,  3, 10, 6,  5, 4, 9,  5,  4, 3,
     8,  4,  3,  2,  9,  5,  4,  3, 9,  5,  4,  3, 8,  4,  3,  2, 7,  3,  2, 1, 8,  4,  3, 2,
     10, 6,  5,  4,  9,  5,  4,  3, 8,  4,  3,  2, 9,  5,  4,  3, 11, 7,  6, 5, 10, 6,  5, 4,
     9,  5,  4,  3,  10, 6,  5,  4, 11, 7,  6,  5, 10, 6,  5,  4, 9,  5,  4, 3, 10, 6,  5, 4,
     10, 6,  5,  4,  9,  5,  4,  3, 8,  4,  3,  2, 9,  5,  4,  3, 11, 7,  6, 5, 10, 6,  5, 4,
     9,  5,  4,  3,  10, 6,  5,  4, 12, 8,  7,  6, 11, 7,  6,  5, 10, 6,  5, 4, 11, 7,  6, 5,
     15, 11, 10, 9,  14, 10, 9,  8, 13, 9,  8,  7, 14, 10, 9,  8, 14, 10, 9, 8, 13, 9,  8, 7,
     12, 8,  7,  6,  13, 9,  8,  7, 15, 11, 10, 9, 14, 10, 9,  8, 13, 9,  8, 7, 14, 10, 9, 8,
     16, 12, 11, 10, 15, 11, 10, 9, 14, 10, 9,  8, 15, 11, 10, 9},
    {7,  8,  9,  13, 3,  4,  5,  9,  2,  3,  4,  8,  1, 2,  3,  7,  6,  7,  8,  12, 2, 3, 4,  8,
     1,  2,  3,  7,  0,  1,  2,  6,  7,  8,  9,  13, 3, 4,  5,  9,  2,  3,  4,  8,  1, 2, 3,  7,
     8,  9,  10, 14, 4,  5,  6,  10, 3,  4,  5,  9,  2, 3,  4,  8,  8,  9,  10, 14, 4, 5, 6,  10,
     3,  4,  5,  9,  2,  3,  4,  8,  7,  8,  9,  13, 3, 4,  5,  9,  2,  3,  4,  8,  1, 2, 3,  7,
     8,  9,  10, 14, 4,  5,  6,  10, 3,  4,  5,  9,  2, 3,  4,  8,  9,  10, 11, 15, 5, 6, 7,  11,
     4,  5,  6,  10, 3,  4,  5,  9,  9,  10, 11, 15, 5, 6,  7,  11, 4,  5,  6,  10, 3, 4, 5,  9,
     8,  9,  10, 14, 4,  5,  6,  10, 3,  4,  5,  9,  2, 3,  4,  8,  9,  10, 11, 15, 5, 6, 7,  11,
     4,  5,  6,  10, 3,  4,  5,  9,  10, 11, 12, 16, 6, 7,  8,  12, 5,  6,  7,  11, 4, 5, 6,  10,
     13, 14, 15, 19, 9,  10, 11, 15, 8,  9,  10, 14, 7, 8,  9,  13, 12, 13, 14, 18, 8, 9, 10, 14,
     7,  8,  9,  13, 6,  7,  8,  12, 13, 14, 15, 19, 9, 10, 11, 15, 8,  9,  10, 14, 7, 8, 9,  13,
     14, 15, 16, 20, 10, 11, 12, 16, 9,  10, 11, 15, 8, 9,  10, 14},
    {8,  7,  8,  9,  4,  3,  4,  5,  3,  2,  3,  4,  2,  1, 2,  3,  7,  6,  7,  8,  3, 2, 3, 4,
     2,  1,  2,  3,  1,  0,  1,  2,  8,  7,  8,  9,  4,  3, 4,  5,  3,  2,  3,  4,  2, 1, 2, 3,
     9,  8,  9,  10, 5,  4,  5,  6,  4,  3,  4,  5,  3,  2, 3,  4,  9,  8,  9,  10, 5, 4, 5, 6,
     4,  3,  4,  5,  3,  2,  3,  4,  8,  7,  8,  9,  4,  3, 4,  5,  3,  2,  3,  4,  2, 1, 2, 3,
     9,  8,  9,  10, 5,  4,  5,  6,  4,  3,  4,  5,  3,  2, 3,  4,  10, 9,  10, 11, 6, 5, 6, 7,
     5,  4,  5,  6,  4,  3,  4,  5,  10, 9,  10, 11, 6,  5, 6,  7,  5,  4,  5,  6,  4, 3, 4, 5,
     9,  8,  9,  10, 5,  4,  5,  6,  4,  3,  4,  5,  3,  2, 3,  4,  10, 9,  10, 11, 6, 5, 6, 7,
     5,  4,  5,  6,  4,  3,  4,  5,  11, 10, 11, 12, 7,  6, 7,  8,  6,  5,  6,  7,  5, 4, 5, 6,
     14, 13, 14, 15, 10, 9,  10, 11, 9,  8,  9,  10, 8,  7, 8,  9,  13, 12, 13, 14, 9, 8, 9, 10,
     8,  7,  8,  9,  7,  6,  7,  8,  14, 13, 14, 15, 10, 9, 10, 11, 9,  8,  9,  10, 8, 7, 8, 9,
     15, 14, 15, 16, 11, 10, 11, 12, 10, 9,  10, 11, 9,  8, 9,  10},
    {9,  8,  7,  8,  5,  4,  3,  4,  4,  3,  2,  3,  3,  2,  1, 2,  8,  7,  6,  7,  4,  3, 2, 3,
     3,  2,  1,  2,  2,  1,  0,  1,  9,  8,  7,  8,  5,  4,  3, 4,  4,  3,  2,  3,  3,  2, 1, 2,
     10, 9,  8,  9,  6,  5,  4,  5,  5,  4,  3,  4,  4,  3,  2, 3,  10, 9,  8,  9,  6,  5, 4, 5,
     5,  4,  3,  4,  4,  3,  2,  3,  9,  8,  7,  8,  5,  4,  3, 4,  4,  3,  2,  3,  3,  2, 1, 2,
     10, 9,  8,  9,  6,  5,  4,  5,  5,  4,  3,  4,  4,  3,  2, 3,  11, 10, 9,  10, 7,  6, 5, 6,
     6,  5,  4,  5,  5,  4,  3,  4,  11, 10, 9,  10, 7,  6,  5, 6,  6,  5,  4,  5,  5,  4, 3, 4,
     10, 9,  8,  9,  6,  5,  4,  5,  5,  4,  3,  4,  4,  3,  2, 3,  11, 10, 9,  10, 7,  6, 5, 6,
     6,  5,  4,  5,  5,  4,  3,  4,  12, 11, 10, 11, 8,  7,  6, 7,  7,  6,  5,  6,  6,  5, 4, 5,
     15, 14, 13, 14, 11, 10, 9,  10, 10, 9,  8,  9,  9,  8,  7, 8,  14, 13, 12, 13, 10, 9, 8, 9,
     9,  8,  7,  8,  8,  7,  6,  7,  15, 14, 13, 14, 11, 10, 9, 10, 10, 9,  8,  9,  9,  8, 7, 8,
     16, 15, 14, 15, 12, 11, 10, 11, 11, 10, 9,  10, 10, 9,  8, 9},
    {13, 9,  8,  7,  9,  5,  4,  3,  8,  4,  3,  2,  7,  3,  2,  1, 12, 8,  7,  6,  8,  4,  3, 2,
     7,  3,  2,  1,  6,  2,  1,  0,  13, 9,  8,  7,  9,  5,  4,  3, 8,  4,  3,  2,  7,  3,  2, 1,
     14, 10, 9,  8,  10, 6,  5,  4,  9,  5,  4,  3,  8,  4,  3,  2, 14, 10, 9,  8,  10, 6,  5, 4,
     9,  5,  4,  3,  8,  4,  3,  2,  13, 9,  8,  7,  9,  5,  4,  3, 8,  4,  3,  2,  7,  3,  2, 1,
     14, 10, 9,  8,  10, 6,  5,  4,  9,  5,  4,  3,  8,  4,  3,  2, 15, 11, 10, 9,  11, 7,  6, 5,
     10, 6,  5,  4,  9,  5,  4,  3,  15, 11, 10, 9,  11, 7,  6,  5, 10, 6,  5,  4,  9,  5,  4, 3,
     14, 10, 9,  8,  10, 6,  5,  4,  9,  5,  4,  3,  8,  4,  3,  2, 15, 11, 10, 9,  11, 7,  6, 5,
     10, 6,  5,  4,  9,  5,  4,  3,  16, 12, 11, 10, 12, 8,  7,  6, 11, 7,  6,  5,  10, 6,  5, 4,
     19, 15, 14, 13, 15, 11, 10, 9,  14, 10, 9,  8,  13, 9,  8,  7, 18, 14, 13, 12, 14, 10, 9, 8,
     13, 9,  8,  7,  12, 8,  7,  6,  19, 15, 14, 13, 15, 11, 10, 9, 14, 10, 9,  8,  13, 9,  8, 7,
     20, 16, 15, 14, 16, 12, 11, 10, 15, 11, 10, 9,  14, 10, 9,  8},
    {2, 3,  4,  8,  3,  4,  5,  9,  4,  5,  6,  10, 8,  9,  10, 14, 1, 2, 3,  7,  2,  3,  4,  8,
     3, 4,  5,  9,  7,  8,  9,  13, 0,  1,  2,  6,  1,  2,  3,  7,  2, 3, 4,  8,  6,  7,  8,  12,
     1, 2,  3,  7,  2,  3,  4,  8,  3,  4,  5,  9,  7,  8,  9,  13, 3, 4, 5,  9,  4,  5,  6,  10,
     5, 6,  7,  11, 9,  10, 11, 15, 2,  3,  4,  8,  3,  4,  5,  9,  4, 5, 6,  10, 8,  9,  10, 14,
     1, 2,  3,  7,  2,  3,  4,  8,  3,  4,  5,  9,  7,  8,  9,  13, 2, 3, 4,  8,  3,  4,  5,  9,
     4, 5,  6,  10, 8,  9,  10, 14, 4,  5,  6,  10, 5,  6,  7,  11, 6, 7, 8,  12, 10, 11, 12, 16,
     3, 4,  5,  9,  4,  5,  6,  10, 5,  6,  7,  11, 9,  10, 11, 15, 2, 3, 4,  8,  3,  4,  5,  9,
     4, 5,  6,  10, 8,  9,  10, 14, 3,  4,  5,  9,  4,  5,  6,  10, 5, 6, 7,  11, 9,  10, 11, 15,
     8, 9,  10, 14, 9,  10, 11, 15, 10, 11, 12, 16, 14, 15, 16, 20, 7, 8, 9,  13, 8,  9,  10, 14,
     9, 10, 11, 15, 13, 14, 15, 19, 6,  7,  8,  12, 7,  8,  9,  13, 8, 9, 10, 14, 12, 13, 14, 18,
     7, 8,  9,  13, 8,  9,  10, 14, 9,  10, 11, 15, 13, 14, 15, 19},
    {3,  2, 3,  4,  4,  3,  4,  5,  5,  4,  5,  6,  9,  8,  9,  10, 2, 1, 2, 3,  3,  2,  3,  4,
     4,  3, 4,  5,  8,  7,  8,  9,  1,  0,  1,  2,  2,  1,  2,  3,  3, 2, 3, 4,  7,  6,  7,  8,
     2,  1, 2,  3,  3,  2,  3,  4,  4,  3,  4,  5,  8,  7,  8,  9,  4, 3, 4, 5,  5,  4,  5,  6,
     6,  5, 6,  7,  10, 9,  10, 11, 3,  2,  3,  4,  4,  3,  4,  5,  5, 4, 5, 6,  9,  8,  9,  10,
     2,  1, 2,  3,  3,  2,  3,  4,  4,  3,  4,  5,  8,  7,  8,  9,  3, 2, 3, 4,  4,  3,  4,  5,
     5,  4, 5,  6,  9,  8,  9,  10, 5,  4,  5,  6,  6,  5,  6,  7,  7, 6, 7, 8,  11, 10, 11, 12,
     4,  3, 4,  5,  5,  4,  5,  6,  6,  5,  6,  7,  10, 9,  10, 11, 3, 2, 3, 4,  4,  3,  4,  5,
     5,  4, 5,  6,  9,  8,  9,  10, 4,  3,  4,  5,  5,  4,  5,  6,  6, 5, 6, 7,  10, 9,  10, 11,
     9,  8, 9,  10, 10, 9,  10, 11, 11, 10, 11, 12, 15, 14, 15, 16, 8, 7, 8, 9,  9,  8,  9,  10,
     10, 9, 10, 11, 14, 13, 14, 15, 7,  6,  7,  8,  8,  7,  8,  9,  9, 8, 9, 10, 13, 12, 13, 14,
     8,  7, 8,  9,  9,  8,  9,  10, 10, 9,  10, 11, 14, 13, 14, 15},
    {4,  3,  2, 3,  5,  4,  3,  4,  6,  5,  4,  5,  10, 9,  8,  9,  3,  2, 1, 2, 4,  3,  2,  3,
     5,  4,  3, 4,  9,  8,  7,  8,  2,  1,  0,  1,  3,  2,  1,  2,  4,  3, 2, 3, 8,  7,  6,  7,
     3,  2,  1, 2,  4,  3,  2,  3,  5,  4,  3,  4,  9,  8,  7,  8,  5,  4, 3, 4, 6,  5,  4,  5,
     7,  6,  5, 6,  11, 10, 9,  10, 4,  3,  2,  3,  5,  4,  3,  4,  6,  5, 4, 5, 10, 9,  8,  9,
     3,  2,  1, 2,  4,  3,  2,  3,  5,  4,  3,  4,  9,  8,  7,  8,  4,  3, 2, 3, 5,  4,  3,  4,
     6,  5,  4, 5,  10, 9,  8,  9,  6,  5,  4,  5,  7,  6,  5,  6,  8,  7, 6, 7, 12, 11, 10, 11,
     5,  4,  3, 4,  6,  5,  4,  5,  7,  6,  5,  6,  11, 10, 9,  10, 4,  3, 2, 3, 5,  4,  3,  4,
     6,  5,  4, 5,  10, 9,  8,  9,  5,  4,  3,  4,  6,  5,  4,  5,  7,  6, 5, 6, 11, 10, 9,  10,
     10, 9,  8, 9,  11, 10, 9,  10, 12, 11, 10, 11, 16, 15, 14, 15, 9,  8, 7, 8, 10, 9,  8,  9,
     11, 10, 9, 10, 15, 14, 13, 14, 8,  7,  6,  7,  9,  8,  7,  8,  10, 9, 8, 9, 14, 13, 12, 13,
     9,  8,  7, 8,  10, 9,  8,  9,  11, 10, 9,  10, 15, 14, 13, 14},
    {8,  4,  3,  2, 9,  5,  4,  3,  10, 6,  5,  4,  14, 10, 9,  8,  7,  3,  2, 1, 8,  4,  3,  2,
     9,  5,  4,  3, 13, 9,  8,  7,  6,  2,  1,  0,  7,  3,  2,  1,  8,  4,  3, 2, 12, 8,  7,  6,
     7,  3,  2,  1, 8,  4,  3,  2,  9,  5,  4,  3,  13, 9,  8,  7,  9,  5,  4, 3, 10, 6,  5,  4,
     11, 7,  6,  5, 15, 11, 10, 9,  8,  4,  3,  2,  9,  5,  4,  3,  10, 6,  5, 4, 14, 10, 9,  8,
     7,  3,  2,  1, 8,  4,  3,  2,  9,  5,  4,  3,  13, 9,  8,  7,  8,  4,  3, 2, 9,  5,  4,  3,
     10, 6,  5,  4, 14, 10, 9,  8,  10, 6,  5,  4,  11, 7,  6,  5,  12, 8,  7, 6, 16, 12, 11, 10,
     9,  5,  4,  3, 10, 6,  5,  4,  11, 7,  6,  5,  15, 11, 10, 9,  8,  4,  3, 2, 9,  5,  4,  3,
     10, 6,  5,  4, 14, 10, 9,  8,  9,  5,  4,  3,  10, 6,  5,  4,  11, 7,  6, 5, 15, 11, 10, 9,
     14, 10, 9,  8, 15, 11, 10, 9,  16, 12, 11, 10, 20, 16, 15, 14, 13, 9,  8, 7, 14, 10, 9,  8,
     15, 11, 10, 9, 19, 15, 14, 13, 12, 8,  7,  6,  13, 9,  8,  7,  14, 10, 9, 8, 18, 14, 13, 12,
     13, 9,  8,  7, 14, 10, 9,  8,  15, 11, 10, 9,  19, 15, 14, 13},
    {3, 4,  5,  9,  2, 3,  4,  8,  3, 4,  5,  9,  4,  5,  6,  10, 2, 3, 4,  8,  1, 2, 3,  7,
     2, 3,  4,  8,  3, 4,  5,  9,  1, 2,  3,  7,  0,  1,  2,  6,  1, 2, 3,  7,  2, 3, 4,  8,
     2, 3,  4,  8,  1, 2,  3,  7,  2, 3,  4,  8,  3,  4,  5,  9,  4, 5, 6,  10, 3, 4, 5,  9,
     4, 5,  6,  10, 5, 6,  7,  11, 3, 4,  5,  9,  2,  3,  4,  8,  3, 4, 5,  9,  4, 5, 6,  10,
     2, 3,  4,  8,  1, 2,  3,  7,  2, 3,  4,  8,  3,  4,  5,  9,  3, 4, 5,  9,  2, 3, 4,  8,
     3, 4,  5,  9,  4, 5,  6,  10, 5, 6,  7,  11, 4,  5,  6,  10, 5, 6, 7,  11, 6, 7, 8,  12,
     4, 5,  6,  10, 3, 4,  5,  9,  4, 5,  6,  10, 5,  6,  7,  11, 3, 4, 5,  9,  2, 3, 4,  8,
     3, 4,  5,  9,  4, 5,  6,  10, 4, 5,  6,  10, 3,  4,  5,  9,  4, 5, 6,  10, 5, 6, 7,  11,
     9, 10, 11, 15, 8, 9,  10, 14, 9, 10, 11, 15, 10, 11, 12, 16, 8, 9, 10, 14, 7, 8, 9,  13,
     8, 9,  10, 14, 9, 10, 11, 15, 7, 8,  9,  13, 6,  7,  8,  12, 7, 8, 9,  13, 8, 9, 10, 14,
     8, 9,  10, 14, 7, 8,  9,  13, 8, 9,  10, 14, 9,  10, 11, 15},
    {4, 3, 4, 5,  3, 2,  3, 4, 4, 3,  4,  5,  5,  4,  5,  6,  3, 2,  3,  4, 2,  1,  2,  3,  3,  2,
     3, 4, 4, 3,  4, 5,  2, 1, 2, 3,  1,  0,  1,  2,  2,  1,  2, 3,  3,  2, 3,  4,  3,  2,  3,  4,
     2, 1, 2, 3,  3, 2,  3, 4, 4, 3,  4,  5,  5,  4,  5,  6,  4, 3,  4,  5, 5,  4,  5,  6,  6,  5,
     6, 7, 4, 3,  4, 5,  3, 2, 3, 4,  4,  3,  4,  5,  5,  4,  5, 6,  3,  2, 3,  4,  2,  1,  2,  3,
     3, 2, 3, 4,  4, 3,  4, 5, 4, 3,  4,  5,  3,  2,  3,  4,  4, 3,  4,  5, 5,  4,  5,  6,  6,  5,
     6, 7, 5, 4,  5, 6,  6, 5, 6, 7,  7,  6,  7,  8,  5,  4,  5, 6,  4,  3, 4,  5,  5,  4,  5,  6,
     6, 5, 6, 7,  4, 3,  4, 5, 3, 2,  3,  4,  4,  3,  4,  5,  5, 4,  5,  6, 5,  4,  5,  6,  4,  3,
     4, 5, 5, 4,  5, 6,  6, 5, 6, 7,  10, 9,  10, 11, 9,  8,  9, 10, 10, 9, 10, 11, 11, 10, 11, 12,
     9, 8, 9, 10, 8, 7,  8, 9, 9, 8,  9,  10, 10, 9,  10, 11, 8, 7,  8,  9, 7,  6,  7,  8,  8,  7,
     8, 9, 9, 8,  9, 10, 9, 8, 9, 10, 8,  7,  8,  9,  9,  8,  9, 10, 10, 9, 10, 11},
    {5,  4, 3,  4, 4, 3, 2,  3, 5,  4, 3,  4,  6,  5,  4,  5,  4, 3, 2,  3,  3, 2,  1,  2,  4,  3,
     2,  3, 5,  4, 3, 4, 3,  2, 1,  2, 2,  1,  0,  1,  3,  2,  1, 2, 4,  3,  2, 3,  4,  3,  2,  3,
     3,  2, 1,  2, 4, 3, 2,  3, 5,  4, 3,  4,  6,  5,  4,  5,  5, 4, 3,  4,  6, 5,  4,  5,  7,  6,
     5,  6, 5,  4, 3, 4, 4,  3, 2,  3, 5,  4,  3,  4,  6,  5,  4, 5, 4,  3,  2, 3,  3,  2,  1,  2,
     4,  3, 2,  3, 5, 4, 3,  4, 5,  4, 3,  4,  4,  3,  2,  3,  5, 4, 3,  4,  6, 5,  4,  5,  7,  6,
     5,  6, 6,  5, 4, 5, 7,  6, 5,  6, 8,  7,  6,  7,  6,  5,  4, 5, 5,  4,  3, 4,  6,  5,  4,  5,
     7,  6, 5,  6, 5, 4, 3,  4, 4,  3, 2,  3,  5,  4,  3,  4,  6, 5, 4,  5,  6, 5,  4,  5,  5,  4,
     3,  4, 6,  5, 4, 5, 7,  6, 5,  6, 11, 10, 9,  10, 10, 9,  8, 9, 11, 10, 9, 10, 12, 11, 10, 11,
     10, 9, 8,  9, 9, 8, 7,  8, 10, 9, 8,  9,  11, 10, 9,  10, 9, 8, 7,  8,  8, 7,  6,  7,  9,  8,
     7,  8, 10, 9, 8, 9, 10, 9, 8,  9, 9,  8,  7,  8,  10, 9,  8, 9, 11, 10, 9, 10},
    {9,  5,  4,  3, 8,  4,  3,  2, 9,  5,  4,  3, 10, 6,  5,  4,  8,  4,  3, 2, 7,  3,  2, 1,
     8,  4,  3,  2, 9,  5,  4,  3, 7,  3,  2,  1, 6,  2,  1,  0,  7,  3,  2, 1, 8,  4,  3, 2,
     8,  4,  3,  2, 7,  3,  2,  1, 8,  4,  3,  2, 9,  5,  4,  3,  10, 6,  5, 4, 9,  5,  4, 3,
     10, 6,  5,  4, 11, 7,  6,  5, 9,  5,  4,  3, 8,  4,  3,  2,  9,  5,  4, 3, 10, 6,  5, 4,
     8,  4,  3,  2, 7,  3,  2,  1, 8,  4,  3,  2, 9,  5,  4,  3,  9,  5,  4, 3, 8,  4,  3, 2,
     9,  5,  4,  3, 10, 6,  5,  4, 11, 7,  6,  5, 10, 6,  5,  4,  11, 7,  6, 5, 12, 8,  7, 6,
     10, 6,  5,  4, 9,  5,  4,  3, 10, 6,  5,  4, 11, 7,  6,  5,  9,  5,  4, 3, 8,  4,  3, 2,
     9,  5,  4,  3, 10, 6,  5,  4, 10, 6,  5,  4, 9,  5,  4,  3,  10, 6,  5, 4, 11, 7,  6, 5,
     15, 11, 10, 9, 14, 10, 9,  8, 15, 11, 10, 9, 16, 12, 11, 10, 14, 10, 9, 8, 13, 9,  8, 7,
     14, 10, 9,  8, 15, 11, 10, 9, 13, 9,  8,  7, 12, 8,  7,  6,  13, 9,  8, 7, 14, 10, 9, 8,
     14, 10, 9,  8, 13, 9,  8,  7, 14, 10, 9,  8, 15, 11, 10, 9},
    {4,  5,  6,  10, 3, 4,  5,  9,  2, 3, 4,  8,  3, 4,  5,  9,  3, 4,  5,  9,  2, 3, 4,  8,
     1,  2,  3,  7,  2, 3,  4,  8,  2, 3, 4,  8,  1, 2,  3,  7,  0, 1,  2,  6,  1, 2, 3,  7,
     3,  4,  5,  9,  2, 3,  4,  8,  1, 2, 3,  7,  2, 3,  4,  8,  5, 6,  7,  11, 4, 5, 6,  10,
     3,  4,  5,  9,  4, 5,  6,  10, 4, 5, 6,  10, 3, 4,  5,  9,  2, 3,  4,  8,  3, 4, 5,  9,
     3,  4,  5,  9,  2, 3,  4,  8,  1, 2, 3,  7,  2, 3,  4,  8,  4, 5,  6,  10, 3, 4, 5,  9,
     2,  3,  4,  8,  3, 4,  5,  9,  6, 7, 8,  12, 5, 6,  7,  11, 4, 5,  6,  10, 5, 6, 7,  11,
     5,  6,  7,  11, 4, 5,  6,  10, 3, 4, 5,  9,  4, 5,  6,  10, 4, 5,  6,  10, 3, 4, 5,  9,
     2,  3,  4,  8,  3, 4,  5,  9,  5, 6, 7,  11, 4, 5,  6,  10, 3, 4,  5,  9,  4, 5, 6,  10,
     10, 11, 12, 16, 9, 10, 11, 15, 8, 9, 10, 14, 9, 10, 11, 15, 9, 10, 11, 15, 8, 9, 10, 14,
     7,  8,  9,  13, 8, 9,  10, 14, 8, 9, 10, 14, 7, 8,  9,  13, 6, 7,  8,  12, 7, 8, 9,  13,
     9,  10, 11, 15, 8, 9,  10, 14, 7, 8, 9,  13, 8, 9,  10, 14},
    {5,  4,  5,  6,  4,  3, 4,  5,  3, 2, 3, 4,  4,  3, 4,  5,  4,  3, 4,  5,  3, 2, 3, 4,
     2,  1,  2,  3,  3,  2, 3,  4,  3, 2, 3, 4,  2,  1, 2,  3,  1,  0, 1,  2,  2, 1, 2, 3,
     4,  3,  4,  5,  3,  2, 3,  4,  2, 1, 2, 3,  3,  2, 3,  4,  6,  5, 6,  7,  5, 4, 5, 6,
     4,  3,  4,  5,  5,  4, 5,  6,  5, 4, 5, 6,  4,  3, 4,  5,  3,  2, 3,  4,  4, 3, 4, 5,
     4,  3,  4,  5,  3,  2, 3,  4,  2, 1, 2, 3,  3,  2, 3,  4,  5,  4, 5,  6,  4, 3, 4, 5,
     3,  2,  3,  4,  4,  3, 4,  5,  7, 6, 7, 8,  6,  5, 6,  7,  5,  4, 5,  6,  6, 5, 6, 7,
     6,  5,  6,  7,  5,  4, 5,  6,  4, 3, 4, 5,  5,  4, 5,  6,  5,  4, 5,  6,  4, 3, 4, 5,
     3,  2,  3,  4,  4,  3, 4,  5,  6, 5, 6, 7,  5,  4, 5,  6,  4,  3, 4,  5,  5, 4, 5, 6,
     11, 10, 11, 12, 10, 9, 10, 11, 9, 8, 9, 10, 10, 9, 10, 11, 10, 9, 10, 11, 9, 8, 9, 10,
     8,  7,  8,  9,  9,  8, 9,  10, 9, 8, 9, 10, 8,  7, 8,  9,  7,  6, 7,  8,  8, 7, 8, 9,
     10, 9,  10, 11, 9,  8, 9,  10, 8, 7, 8, 9,  9,  8, 9,  10},
    {6,  5,  4,  5,  5,  4,  3, 4,  4,  3, 2, 3, 5,  4,  3, 4,  5,  4,  3, 4,  4,  3, 2, 3,
     3,  2,  1,  2,  4,  3,  2, 3,  4,  3, 2, 3, 3,  2,  1, 2,  2,  1,  0, 1,  3,  2, 1, 2,
     5,  4,  3,  4,  4,  3,  2, 3,  3,  2, 1, 2, 4,  3,  2, 3,  7,  6,  5, 6,  6,  5, 4, 5,
     5,  4,  3,  4,  6,  5,  4, 5,  6,  5, 4, 5, 5,  4,  3, 4,  4,  3,  2, 3,  5,  4, 3, 4,
     5,  4,  3,  4,  4,  3,  2, 3,  3,  2, 1, 2, 4,  3,  2, 3,  6,  5,  4, 5,  5,  4, 3, 4,
     4,  3,  2,  3,  5,  4,  3, 4,  8,  7, 6, 7, 7,  6,  5, 6,  6,  5,  4, 5,  7,  6, 5, 6,
     7,  6,  5,  6,  6,  5,  4, 5,  5,  4, 3, 4, 6,  5,  4, 5,  6,  5,  4, 5,  5,  4, 3, 4,
     4,  3,  2,  3,  5,  4,  3, 4,  7,  6, 5, 6, 6,  5,  4, 5,  5,  4,  3, 4,  6,  5, 4, 5,
     12, 11, 10, 11, 11, 10, 9, 10, 10, 9, 8, 9, 11, 10, 9, 10, 11, 10, 9, 10, 10, 9, 8, 9,
     9,  8,  7,  8,  10, 9,  8, 9,  10, 9, 8, 9, 9,  8,  7, 8,  8,  7,  6, 7,  9,  8, 7, 8,
     11, 10, 9,  10, 10, 9,  8, 9,  9,  8, 7, 8, 10, 9,  8, 9},
    {10, 6,  5,  4,  9,  5,  4,  3, 8,  4,  3, 2, 9,  5,  4,  3, 9,  5,  4,  3, 8,  4,  3, 2,
     7,  3,  2,  1,  8,  4,  3,  2, 8,  4,  3, 2, 7,  3,  2,  1, 6,  2,  1,  0, 7,  3,  2, 1,
     9,  5,  4,  3,  8,  4,  3,  2, 7,  3,  2, 1, 8,  4,  3,  2, 11, 7,  6,  5, 10, 6,  5, 4,
     9,  5,  4,  3,  10, 6,  5,  4, 10, 6,  5, 4, 9,  5,  4,  3, 8,  4,  3,  2, 9,  5,  4, 3,
     9,  5,  4,  3,  8,  4,  3,  2, 7,  3,  2, 1, 8,  4,  3,  2, 10, 6,  5,  4, 9,  5,  4, 3,
     8,  4,  3,  2,  9,  5,  4,  3, 12, 8,  7, 6, 11, 7,  6,  5, 10, 6,  5,  4, 11, 7,  6, 5,
     11, 7,  6,  5,  10, 6,  5,  4, 9,  5,  4, 3, 10, 6,  5,  4, 10, 6,  5,  4, 9,  5,  4, 3,
     8,  4,  3,  2,  9,  5,  4,  3, 11, 7,  6, 5, 10, 6,  5,  4, 9,  5,  4,  3, 10, 6,  5, 4,
     16, 12, 11, 10, 15, 11, 10, 9, 14, 10, 9, 8, 15, 11, 10, 9, 15, 11, 10, 9, 14, 10, 9, 8,
     13, 9,  8,  7,  14, 10, 9,  8, 14, 10, 9, 8, 13, 9,  8,  7, 12, 8,  7,  6, 13, 9,  8, 7,
     15, 11, 10, 9,  14, 10, 9,  8, 13, 9,  8, 7, 14, 10, 9,  8},
    {8,  9,  10, 14, 4,  5,  6,  10, 3,  4,  5,  9,  2, 3, 4,  8,  7,  8,  9,  13, 3, 4,  5,  9,
     2,  3,  4,  8,  1,  2,  3,  7,  6,  7,  8,  12, 2, 3, 4,  8,  1,  2,  3,  7,  0, 1,  2,  6,
     7,  8,  9,  13, 3,  4,  5,  9,  2,  3,  4,  8,  1, 2, 3,  7,  9,  10, 11, 15, 5, 6,  7,  11,
     4,  5,  6,  10, 3,  4,  5,  9,  8,  9,  10, 14, 4, 5, 6,  10, 3,  4,  5,  9,  2, 3,  4,  8,
     7,  8,  9,  13, 3,  4,  5,  9,  2,  3,  4,  8,  1, 2, 3,  7,  8,  9,  10, 14, 4, 5,  6,  10,
     3,  4,  5,  9,  2,  3,  4,  8,  10, 11, 12, 16, 6, 7, 8,  12, 5,  6,  7,  11, 4, 5,  6,  10,
     9,  10, 11, 15, 5,  6,  7,  11, 4,  5,  6,  10, 3, 4, 5,  9,  8,  9,  10, 14, 4, 5,  6,  10,
     3,  4,  5,  9,  2,  3,  4,  8,  9,  10, 11, 15, 5, 6, 7,  11, 4,  5,  6,  10, 3, 4,  5,  9,
     14, 15, 16, 20, 10, 11, 12, 16, 9,  10, 11, 15, 8, 9, 10, 14, 13, 14, 15, 19, 9, 10, 11, 15,
     8,  9,  10, 14, 7,  8,  9,  13, 12, 13, 14, 18, 8, 9, 10, 14, 7,  8,  9,  13, 6, 7,  8,  12,
     13, 14, 15, 19, 9,  10, 11, 15, 8,  9,  10, 14, 7, 8, 9,  13},
    {9,  8,  9,  10, 5,  4,  5,  6,  4,  3,  4,  5,  3, 2, 3, 4,  8,  7,  8,  9,  4,  3, 4,  5,
     3,  2,  3,  4,  2,  1,  2,  3,  7,  6,  7,  8,  3, 2, 3, 4,  2,  1,  2,  3,  1,  0, 1,  2,
     8,  7,  8,  9,  4,  3,  4,  5,  3,  2,  3,  4,  2, 1, 2, 3,  10, 9,  10, 11, 6,  5, 6,  7,
     5,  4,  5,  6,  4,  3,  4,  5,  9,  8,  9,  10, 5, 4, 5, 6,  4,  3,  4,  5,  3,  2, 3,  4,
     8,  7,  8,  9,  4,  3,  4,  5,  3,  2,  3,  4,  2, 1, 2, 3,  9,  8,  9,  10, 5,  4, 5,  6,
     4,  3,  4,  5,  3,  2,  3,  4,  11, 10, 11, 12, 7, 6, 7, 8,  6,  5,  6,  7,  5,  4, 5,  6,
     10, 9,  10, 11, 6,  5,  6,  7,  5,  4,  5,  6,  4, 3, 4, 5,  9,  8,  9,  10, 5,  4, 5,  6,
     4,  3,  4,  5,  3,  2,  3,  4,  10, 9,  10, 11, 6, 5, 6, 7,  5,  4,  5,  6,  4,  3, 4,  5,
     15, 14, 15, 16, 11, 10, 11, 12, 10, 9,  10, 11, 9, 8, 9, 10, 14, 13, 14, 15, 10, 9, 10, 11,
     9,  8,  9,  10, 8,  7,  8,  9,  13, 12, 13, 14, 9, 8, 9, 10, 8,  7,  8,  9,  7,  6, 7,  8,
     14, 13, 14, 15, 10, 9,  10, 11, 9,  8,  9,  10, 8, 7, 8, 9},
    {10, 9,  8,  9,  6,  5,  4,  5,  5,  4,  3,  4,  4,  3, 2, 3, 9,  8,  7,  8,  5,  4,  3, 4,
     4,  3,  2,  3,  3,  2,  1,  2,  8,  7,  6,  7,  4,  3, 2, 3, 3,  2,  1,  2,  2,  1,  0, 1,
     9,  8,  7,  8,  5,  4,  3,  4,  4,  3,  2,  3,  3,  2, 1, 2, 11, 10, 9,  10, 7,  6,  5, 6,
     6,  5,  4,  5,  5,  4,  3,  4,  10, 9,  8,  9,  6,  5, 4, 5, 5,  4,  3,  4,  4,  3,  2, 3,
     9,  8,  7,  8,  5,  4,  3,  4,  4,  3,  2,  3,  3,  2, 1, 2, 10, 9,  8,  9,  6,  5,  4, 5,
     5,  4,  3,  4,  4,  3,  2,  3,  12, 11, 10, 11, 8,  7, 6, 7, 7,  6,  5,  6,  6,  5,  4, 5,
     11, 10, 9,  10, 7,  6,  5,  6,  6,  5,  4,  5,  5,  4, 3, 4, 10, 9,  8,  9,  6,  5,  4, 5,
     5,  4,  3,  4,  4,  3,  2,  3,  11, 10, 9,  10, 7,  6, 5, 6, 6,  5,  4,  5,  5,  4,  3, 4,
     16, 15, 14, 15, 12, 11, 10, 11, 11, 10, 9,  10, 10, 9, 8, 9, 15, 14, 13, 14, 11, 10, 9, 10,
     10, 9,  8,  9,  9,  8,  7,  8,  14, 13, 12, 13, 10, 9, 8, 9, 9,  8,  7,  8,  8,  7,  6, 7,
     15, 14, 13, 14, 11, 10, 9,  10, 10, 9,  8,  9,  9,  8, 7, 8},
    {14, 10, 9,  8,  10, 6,  5,  4,  9,  5,  4,  3,  8,  4,  3, 2, 13, 9,  8,  7,  9,  5,  4,  3,
     8,  4,  3,  2,  7,  3,  2,  1,  12, 8,  7,  6,  8,  4,  3, 2, 7,  3,  2,  1,  6,  2,  1,  0,
     13, 9,  8,  7,  9,  5,  4,  3,  8,  4,  3,  2,  7,  3,  2, 1, 15, 11, 10, 9,  11, 7,  6,  5,
     10, 6,  5,  4,  9,  5,  4,  3,  14, 10, 9,  8,  10, 6,  5, 4, 9,  5,  4,  3,  8,  4,  3,  2,
     13, 9,  8,  7,  9,  5,  4,  3,  8,  4,  3,  2,  7,  3,  2, 1, 14, 10, 9,  8,  10, 6,  5,  4,
     9,  5,  4,  3,  8,  4,  3,  2,  16, 12, 11, 10, 12, 8,  7, 6, 11, 7,  6,  5,  10, 6,  5,  4,
     15, 11, 10, 9,  11, 7,  6,  5,  10, 6,  5,  4,  9,  5,  4, 3, 14, 10, 9,  8,  10, 6,  5,  4,
     9,  5,  4,  3,  8,  4,  3,  2,  15, 11, 10, 9,  11, 7,  6, 5, 10, 6,  5,  4,  9,  5,  4,  3,
     20, 16, 15, 14, 16, 12, 11, 10, 15, 11, 10, 9,  14, 10, 9, 8, 19, 15, 14, 13, 15, 11, 10, 9,
     14, 10, 9,  8,  13, 9,  8,  7,  18, 14, 13, 12, 14, 10, 9, 8, 13, 9,  8,  7,  12, 8,  7,  6,
     19, 15, 14, 13, 15, 11, 10, 9,  14, 10, 9,  8,  13, 9,  8, 7},
    {6,  7,  8,  12, 7,  8,  9,  13, 8,  9,  10, 14, 12, 13, 14, 18, 2,  3,  4,  8,  3,  4,  5,  9,
     4,  5,  6,  10, 8,  9,  10, 14, 1,  2,  3,  7,  2,  3,  4,  8,  3,  4,  5,  9,  7,  8,  9,  13,
     0,  1,  2,  6,  1,  2,  3,  7,  2,  3,  4,  8,  6,  7,  8,  12, 7,  8,  9,  13, 8,  9,  10, 14,
     9,  10, 11, 15, 13, 14, 15, 19, 3,  4,  5,  9,  4,  5,  6,  10, 5,  6,  7,  11, 9,  10, 11, 15,
     2,  3,  4,  8,  3,  4,  5,  9,  4,  5,  6,  10, 8,  9,  10, 14, 1,  2,  3,  7,  2,  3,  4,  8,
     3,  4,  5,  9,  7,  8,  9,  13, 8,  9,  10, 14, 9,  10, 11, 15, 10, 11, 12, 16, 14, 15, 16, 20,
     4,  5,  6,  10, 5,  6,  7,  11, 6,  7,  8,  12, 10, 11, 12, 16, 3,  4,  5,  9,  4,  5,  6,  10,
     5,  6,  7,  11, 9,  10, 11, 15, 2,  3,  4,  8,  3,  4,  5,  9,  4,  5,  6,  10, 8,  9,  10, 14,
     12, 13, 14, 18, 13, 14, 15, 19, 14, 15, 16, 20, 18, 19, 20, 24, 8,  9,  10, 14, 9,  10, 11, 15,
     10, 11, 12, 16, 14, 15, 16, 20, 7,  8,  9,  13, 8,  9,  10, 14, 9,  10, 11, 15, 13, 14, 15, 19,
     6,  7,  8,  12, 7,  8,  9,  13, 8,  9,  10, 14, 12, 13, 14, 18},
    {7,  6,  7,  8,  8,  7,  8,  9,  9,  8,  9,  10, 13, 12, 13, 14, 3,  2,  3,  4,  4,  3,  4,  5,
     5,  4,  5,  6,  9,  8,  9,  10, 2,  1,  2,  3,  3,  2,  3,  4,  4,  3,  4,  5,  8,  7,  8,  9,
     1,  0,  1,  2,  2,  1,  2,  3,  3,  2,  3,  4,  7,  6,  7,  8,  8,  7,  8,  9,  9,  8,  9,  10,
     10, 9,  10, 11, 14, 13, 14, 15, 4,  3,  4,  5,  5,  4,  5,  6,  6,  5,  6,  7,  10, 9,  10, 11,
     3,  2,  3,  4,  4,  3,  4,  5,  5,  4,  5,  6,  9,  8,  9,  10, 2,  1,  2,  3,  3,  2,  3,  4,
     4,  3,  4,  5,  8,  7,  8,  9,  9,  8,  9,  10, 10, 9,  10, 11, 11, 10, 11, 12, 15, 14, 15, 16,
     5,  4,  5,  6,  6,  5,  6,  7,  7,  6,  7,  8,  11, 10, 11, 12, 4,  3,  4,  5,  5,  4,  5,  6,
     6,  5,  6,  7,  10, 9,  10, 11, 3,  2,  3,  4,  4,  3,  4,  5,  5,  4,  5,  6,  9,  8,  9,  10,
     13, 12, 13, 14, 14, 13, 14, 15, 15, 14, 15, 16, 19, 18, 19, 20, 9,  8,  9,  10, 10, 9,  10, 11,
     11, 10, 11, 12, 15, 14, 15, 16, 8,  7,  8,  9,  9,  8,  9,  10, 10, 9,  10, 11, 14, 13, 14, 15,
     7,  6,  7,  8,  8,  7,  8,  9,  9,  8,  9,  10, 13, 12, 13, 14},
    {8,  7,  6,  7,  9,  8,  7,  8,  10, 9,  8,  9,  14, 13, 12, 13, 4,  3,  2,  3,  5,  4,  3,  4,
     6,  5,  4,  5,  10, 9,  8,  9,  3,  2,  1,  2,  4,  3,  2,  3,  5,  4,  3,  4,  9,  8,  7,  8,
     2,  1,  0,  1,  3,  2,  1,  2,  4,  3,  2,  3,  8,  7,  6,  7,  9,  8,  7,  8,  10, 9,  8,  9,
     11, 10, 9,  10, 15, 14, 13, 14, 5,  4,  3,  4,  6,  5,  4,  5,  7,  6,  5,  6,  11, 10, 9,  10,
     4,  3,  2,  3,  5,  4,  3,  4,  6,  5,  4,  5,  10, 9,  8,  9,  3,  2,  1,  2,  4,  3,  2,  3,
     5,  4,  3,  4,  9,  8,  7,  8,  10, 9,  8,  9,  11, 10, 9,  10, 12, 11, 10, 11, 16, 15, 14, 15,
     6,  5,  4,  5,  7,  6,  5,  6,  8,  7,  6,  7,  12, 11, 10, 11, 5,  4,  3,  4,  6,  5,  4,  5,
     7,  6,  5,  6,  11, 10, 9,  10, 4,  3,  2,  3,  5,  4,  3,  4,  6,  5,  4,  5,  10, 9,  8,  9,
     14, 13, 12, 13, 15, 14, 13, 14, 16, 15, 14, 15, 20, 19, 18, 19, 10, 9,  8,  9,  11, 10, 9,  10,
     12, 11, 10, 11, 16, 15, 14, 15, 9,  8,  7,  8,  10, 9,  8,  9,  11, 10, 9,  10, 15, 14, 13, 14,
     8,  7,  6,  7,  9,  8,  7,  8,  10, 9,  8,  9,  14, 13, 12, 13},
    {12, 8,  7,  6,  13, 9,  8,  7,  14, 10, 9,  8,  18, 14, 13, 12, 8,  4,  3,  2,  9,  5,  4,  3,
     10, 6,  5,  4,  14, 10, 9,  8,  7,  3,  2,  1,  8,  4,  3,  2,  9,  5,  4,  3,  13, 9,  8,  7,
     6,  2,  1,  0,  7,  3,  2,  1,  8,  4,  3,  2,  12, 8,  7,  6,  13, 9,  8,  7,  14, 10, 9,  8,
     15, 11, 10, 9,  19, 15, 14, 13, 9,  5,  4,  3,  10, 6,  5,  4,  11, 7,  6,  5,  15, 11, 10, 9,
     8,  4,  3,  2,  9,  5,  4,  3,  10, 6,  5,  4,  14, 10, 9,  8,  7,  3,  2,  1,  8,  4,  3,  2,
     9,  5,  4,  3,  13, 9,  8,  7,  14, 10, 9,  8,  15, 11, 10, 9,  16, 12, 11, 10, 20, 16, 15, 14,
     10, 6,  5,  4,  11, 7,  6,  5,  12, 8,  7,  6,  16, 12, 11, 10, 9,  5,  4,  3,  10, 6,  5,  4,
     11, 7,  6,  5,  15, 11, 10, 9,  8,  4,  3,  2,  9,  5,  4,  3,  10, 6,  5,  4,  14, 10, 9,  8,
     18, 14, 13, 12, 19, 15, 14, 13, 20, 16, 15, 14, 24, 20, 19, 18, 14, 10, 9,  8,  15, 11, 10, 9,
     16, 12, 11, 10, 20, 16, 15, 14, 13, 9,  8,  7,  14, 10, 9,  8,  15, 11, 10, 9,  19, 15, 14, 13,
     12, 8,  7,  6,  13, 9,  8,  7,  14, 10, 9,  8,  18, 14, 13, 12},
    {7,  8,  9,  13, 6,  7,  8,  12, 7,  8,  9,  13, 8,  9,  10, 14, 3, 4,  5,  9,  2,  3,  4,  8,
     3,  4,  5,  9,  4,  5,  6,  10, 2,  3,  4,  8,  1,  2,  3,  7,  2, 3,  4,  8,  3,  4,  5,  9,
     1,  2,  3,  7,  0,  1,  2,  6,  1,  2,  3,  7,  2,  3,  4,  8,  8, 9,  10, 14, 7,  8,  9,  13,
     8,  9,  10, 14, 9,  10, 11, 15, 4,  5,  6,  10, 3,  4,  5,  9,  4, 5,  6,  10, 5,  6,  7,  11,
     3,  4,  5,  9,  2,  3,  4,  8,  3,  4,  5,  9,  4,  5,  6,  10, 2, 3,  4,  8,  1,  2,  3,  7,
     2,  3,  4,  8,  3,  4,  5,  9,  9,  10, 11, 15, 8,  9,  10, 14, 9, 10, 11, 15, 10, 11, 12, 16,
     5,  6,  7,  11, 4,  5,  6,  10, 5,  6,  7,  11, 6,  7,  8,  12, 4, 5,  6,  10, 3,  4,  5,  9,
     4,  5,  6,  10, 5,  6,  7,  11, 3,  4,  5,  9,  2,  3,  4,  8,  3, 4,  5,  9,  4,  5,  6,  10,
     13, 14, 15, 19, 12, 13, 14, 18, 13, 14, 15, 19, 14, 15, 16, 20, 9, 10, 11, 15, 8,  9,  10, 14,
     9,  10, 11, 15, 10, 11, 12, 16, 8,  9,  10, 14, 7,  8,  9,  13, 8, 9,  10, 14, 9,  10, 11, 15,
     7,  8,  9,  13, 6,  7,  8,  12, 7,  8,  9,  13, 8,  9,  10, 14},
    {8,  7,  8,  9,  7,  6,  7,  8,  8,  7,  8,  9,  9,  8,  9,  10, 4,  3, 4,  5,  3,  2,  3,  4,
     4,  3,  4,  5,  5,  4,  5,  6,  3,  2,  3,  4,  2,  1,  2,  3,  3,  2, 3,  4,  4,  3,  4,  5,
     2,  1,  2,  3,  1,  0,  1,  2,  2,  1,  2,  3,  3,  2,  3,  4,  9,  8, 9,  10, 8,  7,  8,  9,
     9,  8,  9,  10, 10, 9,  10, 11, 5,  4,  5,  6,  4,  3,  4,  5,  5,  4, 5,  6,  6,  5,  6,  7,
     4,  3,  4,  5,  3,  2,  3,  4,  4,  3,  4,  5,  5,  4,  5,  6,  3,  2, 3,  4,  2,  1,  2,  3,
     3,  2,  3,  4,  4,  3,  4,  5,  10, 9,  10, 11, 9,  8,  9,  10, 10, 9, 10, 11, 11, 10, 11, 12,
     6,  5,  6,  7,  5,  4,  5,  6,  6,  5,  6,  7,  7,  6,  7,  8,  5,  4, 5,  6,  4,  3,  4,  5,
     5,  4,  5,  6,  6,  5,  6,  7,  4,  3,  4,  5,  3,  2,  3,  4,  4,  3, 4,  5,  5,  4,  5,  6,
     14, 13, 14, 15, 13, 12, 13, 14, 14, 13, 14, 15, 15, 14, 15, 16, 10, 9, 10, 11, 9,  8,  9,  10,
     10, 9,  10, 11, 11, 10, 11, 12, 9,  8,  9,  10, 8,  7,  8,  9,  9,  8, 9,  10, 10, 9,  10, 11,
     8,  7,  8,  9,  7,  6,  7,  8,  8,  7,  8,  9,  9,  8,  9,  10},
    {9,  8,  7,  8,  8,  7,  6,  7,  9,  8,  7,  8,  10, 9,  8,  9,  5,  4,  3, 4,  4,  3,  2,  3,
     5,  4,  3,  4,  6,  5,  4,  5,  4,  3,  2,  3,  3,  2,  1,  2,  4,  3,  2, 3,  5,  4,  3,  4,
     3,  2,  1,  2,  2,  1,  0,  1,  3,  2,  1,  2,  4,  3,  2,  3,  10, 9,  8, 9,  9,  8,  7,  8,
     10, 9,  8,  9,  11, 10, 9,  10, 6,  5,  4,  5,  5,  4,  3,  4,  6,  5,  4, 5,  7,  6,  5,  6,
     5,  4,  3,  4,  4,  3,  2,  3,  5,  4,  3,  4,  6,  5,  4,  5,  4,  3,  2, 3,  3,  2,  1,  2,
     4,  3,  2,  3,  5,  4,  3,  4,  11, 10, 9,  10, 10, 9,  8,  9,  11, 10, 9, 10, 12, 11, 10, 11,
     7,  6,  5,  6,  6,  5,  4,  5,  7,  6,  5,  6,  8,  7,  6,  7,  6,  5,  4, 5,  5,  4,  3,  4,
     6,  5,  4,  5,  7,  6,  5,  6,  5,  4,  3,  4,  4,  3,  2,  3,  5,  4,  3, 4,  6,  5,  4,  5,
     15, 14, 13, 14, 14, 13, 12, 13, 15, 14, 13, 14, 16, 15, 14, 15, 11, 10, 9, 10, 10, 9,  8,  9,
     11, 10, 9,  10, 12, 11, 10, 11, 10, 9,  8,  9,  9,  8,  7,  8,  10, 9,  8, 9,  11, 10, 9,  10,
     9,  8,  7,  8,  8,  7,  6,  7,  9,  8,  7,  8,  10, 9,  8,  9},
    {13, 9,  8,  7,  12, 8,  7,  6,  13, 9,  8,  7,  14, 10, 9,  8,  9,  5,  4,  3, 8,  4,  3,  2,
     9,  5,  4,  3,  10, 6,  5,  4,  8,  4,  3,  2,  7,  3,  2,  1,  8,  4,  3,  2, 9,  5,  4,  3,
     7,  3,  2,  1,  6,  2,  1,  0,  7,  3,  2,  1,  8,  4,  3,  2,  14, 10, 9,  8, 13, 9,  8,  7,
     14, 10, 9,  8,  15, 11, 10, 9,  10, 6,  5,  4,  9,  5,  4,  3,  10, 6,  5,  4, 11, 7,  6,  5,
     9,  5,  4,  3,  8,  4,  3,  2,  9,  5,  4,  3,  10, 6,  5,  4,  8,  4,  3,  2, 7,  3,  2,  1,
     8,  4,  3,  2,  9,  5,  4,  3,  15, 11, 10, 9,  14, 10, 9,  8,  15, 11, 10, 9, 16, 12, 11, 10,
     11, 7,  6,  5,  10, 6,  5,  4,  11, 7,  6,  5,  12, 8,  7,  6,  10, 6,  5,  4, 9,  5,  4,  3,
     10, 6,  5,  4,  11, 7,  6,  5,  9,  5,  4,  3,  8,  4,  3,  2,  9,  5,  4,  3, 10, 6,  5,  4,
     19, 15, 14, 13, 18, 14, 13, 12, 19, 15, 14, 13, 20, 16, 15, 14, 15, 11, 10, 9, 14, 10, 9,  8,
     15, 11, 10, 9,  16, 12, 11, 10, 14, 10, 9,  8,  13, 9,  8,  7,  14, 10, 9,  8, 15, 11, 10, 9,
     13, 9,  8,  7,  12, 8,  7,  6,  13, 9,  8,  7,  14, 10, 9,  8},
    {8,  9,  10, 14, 7,  8,  9,  13, 6,  7,  8,  12, 7,  8,  9,  13, 4,  5,  6,  10, 3, 4,  5,  9,
     2,  3,  4,  8,  3,  4,  5,  9,  3,  4,  5,  9,  2,  3,  4,  8,  1,  2,  3,  7,  2, 3,  4,  8,
     2,  3,  4,  8,  1,  2,  3,  7,  0,  1,  2,  6,  1,  2,  3,  7,  9,  10, 11, 15, 8, 9,  10, 14,
     7,  8,  9,  13, 8,  9,  10, 14, 5,  6,  7,  11, 4,  5,  6,  10, 3,  4,  5,  9,  4, 5,  6,  10,
     4,  5,  6,  10, 3,  4,  5,  9,  2,  3,  4,  8,  3,  4,  5,  9,  3,  4,  5,  9,  2, 3,  4,  8,
     1,  2,  3,  7,  2,  3,  4,  8,  10, 11, 12, 16, 9,  10, 11, 15, 8,  9,  10, 14, 9, 10, 11, 15,
     6,  7,  8,  12, 5,  6,  7,  11, 4,  5,  6,  10, 5,  6,  7,  11, 5,  6,  7,  11, 4, 5,  6,  10,
     3,  4,  5,  9,  4,  5,  6,  10, 4,  5,  6,  10, 3,  4,  5,  9,  2,  3,  4,  8,  3, 4,  5,  9,
     14, 15, 16, 20, 13, 14, 15, 19, 12, 13, 14, 18, 13, 14, 15, 19, 10, 11, 12, 16, 9, 10, 11, 15,
     8,  9,  10, 14, 9,  10, 11, 15, 9,  10, 11, 15, 8,  9,  10, 14, 7,  8,  9,  13, 8, 9,  10, 14,
     8,  9,  10, 14, 7,  8,  9,  13, 6,  7,  8,  12, 7,  8,  9,  13},
    {9,  8,  9,  10, 8,  7,  8,  9,  7,  6,  7,  8,  8,  7,  8,  9,  5,  4,  5,  6,  4,  3, 4,  5,
     3,  2,  3,  4,  4,  3,  4,  5,  4,  3,  4,  5,  3,  2,  3,  4,  2,  1,  2,  3,  3,  2, 3,  4,
     3,  2,  3,  4,  2,  1,  2,  3,  1,  0,  1,  2,  2,  1,  2,  3,  10, 9,  10, 11, 9,  8, 9,  10,
     8,  7,  8,  9,  9,  8,  9,  10, 6,  5,  6,  7,  5,  4,  5,  6,  4,  3,  4,  5,  5,  4, 5,  6,
     5,  4,  5,  6,  4,  3,  4,  5,  3,  2,  3,  4,  4,  3,  4,  5,  4,  3,  4,  5,  3,  2, 3,  4,
     2,  1,  2,  3,  3,  2,  3,  4,  11, 10, 11, 12, 10, 9,  10, 11, 9,  8,  9,  10, 10, 9, 10, 11,
     7,  6,  7,  8,  6,  5,  6,  7,  5,  4,  5,  6,  6,  5,  6,  7,  6,  5,  6,  7,  5,  4, 5,  6,
     4,  3,  4,  5,  5,  4,  5,  6,  5,  4,  5,  6,  4,  3,  4,  5,  3,  2,  3,  4,  4,  3, 4,  5,
     15, 14, 15, 16, 14, 13, 14, 15, 13, 12, 13, 14, 14, 13, 14, 15, 11, 10, 11, 12, 10, 9, 10, 11,
     9,  8,  9,  10, 10, 9,  10, 11, 10, 9,  10, 11, 9,  8,  9,  10, 8,  7,  8,  9,  9,  8, 9,  10,
     9,  8,  9,  10, 8,  7,  8,  9,  7,  6,  7,  8,  8,  7,  8,  9},
    {10, 9,  8,  9,  9,  8,  7,  8,  8,  7,  6,  7,  9,  8,  7,  8,  6,  5,  4,  5,  5,  4,  3, 4,
     4,  3,  2,  3,  5,  4,  3,  4,  5,  4,  3,  4,  4,  3,  2,  3,  3,  2,  1,  2,  4,  3,  2, 3,
     4,  3,  2,  3,  3,  2,  1,  2,  2,  1,  0,  1,  3,  2,  1,  2,  11, 10, 9,  10, 10, 9,  8, 9,
     9,  8,  7,  8,  10, 9,  8,  9,  7,  6,  5,  6,  6,  5,  4,  5,  5,  4,  3,  4,  6,  5,  4, 5,
     6,  5,  4,  5,  5,  4,  3,  4,  4,  3,  2,  3,  5,  4,  3,  4,  5,  4,  3,  4,  4,  3,  2, 3,
     3,  2,  1,  2,  4,  3,  2,  3,  12, 11, 10, 11, 11, 10, 9,  10, 10, 9,  8,  9,  11, 10, 9, 10,
     8,  7,  6,  7,  7,  6,  5,  6,  6,  5,  4,  5,  7,  6,  5,  6,  7,  6,  5,  6,  6,  5,  4, 5,
     5,  4,  3,  4,  6,  5,  4,  5,  6,  5,  4,  5,  5,  4,  3,  4,  4,  3,  2,  3,  5,  4,  3, 4,
     16, 15, 14, 15, 15, 14, 13, 14, 14, 13, 12, 13, 15, 14, 13, 14, 12, 11, 10, 11, 11, 10, 9, 10,
     10, 9,  8,  9,  11, 10, 9,  10, 11, 10, 9,  10, 10, 9,  8,  9,  9,  8,  7,  8,  10, 9,  8, 9,
     10, 9,  8,  9,  9,  8,  7,  8,  8,  7,  6,  7,  9,  8,  7,  8},
    {14, 10, 9,  8,  13, 9,  8,  7,  12, 8,  7,  6,  13, 9,  8,  7,  10, 6,  5,  4,  9,  5,  4,  3,
     8,  4,  3,  2,  9,  5,  4,  3,  9,  5,  4,  3,  8,  4,  3,  2,  7,  3,  2,  1,  8,  4,  3,  2,
     8,  4,  3,  2,  7,  3,  2,  1,  6,  2,  1,  0,  7,  3,  2,  1,  15, 11, 10, 9,  14, 10, 9,  8,
     13, 9,  8,  7,  14, 10, 9,  8,  11, 7,  6,  5,  10, 6,  5,  4,  9,  5,  4,  3,  10, 6,  5,  4,
     10, 6,  5,  4,  9,  5,  4,  3,  8,  4,  3,  2,  9,  5,  4,  3,  9,  5,  4,  3,  8,  4,  3,  2,
     7,  3,  2,  1,  8,  4,  3,  2,  16, 12, 11, 10, 15, 11, 10, 9,  14, 10, 9,  8,  15, 11, 10, 9,
     12, 8,  7,  6,  11, 7,  6,  5,  10, 6,  5,  4,  11, 7,  6,  5,  11, 7,  6,  5,  10, 6,  5,  4,
     9,  5,  4,  3,  10, 6,  5,  4,  10, 6,  5,  4,  9,  5,  4,  3,  8,  4,  3,  2,  9,  5,  4,  3,
     20, 16, 15, 14, 19, 15, 14, 13, 18, 14, 13, 12, 19, 15, 14, 13, 16, 12, 11, 10, 15, 11, 10, 9,
     14, 10, 9,  8,  15, 11, 10, 9,  15, 11, 10, 9,  14, 10, 9,  8,  13, 9,  8,  7,  14, 10, 9,  8,
     14, 10, 9,  8,  13, 9,  8,  7,  12, 8,  7,  6,  13, 9,  8,  7},
    {12, 13, 14, 18, 8,  9,  10, 14, 7,  8,  9,  13, 6,  7,  8,  12, 8,  9,  10, 14, 4,  5,  6,  10,
     3,  4,  5,  9,  2,  3,  4,  8,  7,  8,  9,  13, 3,  4,  5,  9,  2,  3,  4,  8,  1,  2,  3,  7,
     6,  7,  8,  12, 2,  3,  4,  8,  1,  2,  3,  7,  0,  1,  2,  6,  13, 14, 15, 19, 9,  10, 11, 15,
     8,  9,  10, 14, 7,  8,  9,  13, 9,  10, 11, 15, 5,  6,  7,  11, 4,  5,  6,  10, 3,  4,  5,  9,
     8,  9,  10, 14, 4,  5,  6,  10, 3,  4,  5,  9,  2,  3,  4,  8,  7,  8,  9,  13, 3,  4,  5,  9,
     2,  3,  4,  8,  1,  2,  3,  7,  14, 15, 16, 20, 10, 11, 12, 16, 9,  10, 11, 15, 8,  9,  10, 14,
     10, 11, 12, 16, 6,  7,  8,  12, 5,  6,  7,  11, 4,  5,  6,  10, 9,  10, 11, 15, 5,  6,  7,  11,
     4,  5,  6,  10, 3,  4,  5,  9,  8,  9,  10, 14, 4,  5,  6,  10, 3,  4,  5,  9,  2,  3,  4,  8,
     18, 19, 20, 24, 14, 15, 16, 20, 13, 14, 15, 19, 12, 13, 14, 18, 14, 15, 16, 20, 10, 11, 12, 16,
     9,  10, 11, 15, 8,  9,  10, 14, 13, 14, 15, 19, 9,  10, 11, 15, 8,  9,  10, 14, 7,  8,  9,  13,
     12, 13, 14, 18, 8,  9,  10, 14, 7,  8,  9,  13, 6,  7,  8,  12},
    {13, 12, 13, 14, 9,  8,  9,  10, 8,  7,  8,  9,  7,  6,  7,  8,  9,  8,  9,  10, 5,  4,  5,  6,
     4,  3,  4,  5,  3,  2,  3,  4,  8,  7,  8,  9,  4,  3,  4,  5,  3,  2,  3,  4,  2,  1,  2,  3,
     7,  6,  7,  8,  3,  2,  3,  4,  2,  1,  2,  3,  1,  0,  1,  2,  14, 13, 14, 15, 10, 9,  10, 11,
     9,  8,  9,  10, 8,  7,  8,  9,  10, 9,  10, 11, 6,  5,  6,  7,  5,  4,  5,  6,  4,  3,  4,  5,
     9,  8,  9,  10, 5,  4,  5,  6,  4,  3,  4,  5,  3,  2,  3,  4,  8,  7,  8,  9,  4,  3,  4,  5,
     3,  2,  3,  4,  2,  1,  2,  3,  15, 14, 15, 16, 11, 10, 11, 12, 10, 9,  10, 11, 9,  8,  9,  10,
     11, 10, 11, 12, 7,  6,  7,  8,  6,  5,  6,  7,  5,  4,  5,  6,  10, 9,  10, 11, 6,  5,  6,  7,
     5,  4,  5,  6,  4,  3,  4,  5,  9,  8,  9,  10, 5,  4,  5,  6,  4,  3,  4,  5,  3,  2,  3,  4,
     19, 18, 19, 20, 15, 14, 15, 16, 14, 13, 14, 15, 13, 12, 13, 14, 15, 14, 15, 16, 11, 10, 11, 12,
     10, 9,  10, 11, 9,  8,  9,  10, 14, 13, 14, 15, 10, 9,  10, 11, 9,  8,  9,  10, 8,  7,  8,  9,
     13, 12, 13, 14, 9,  8,  9,  10, 8,  7,  8,  9,  7,  6,  7,  8},
    {14, 13, 12, 13, 10, 9,  8,  9,  9,  8,  7,  8,  8,  7,  6,  7,  10, 9,  8,  9,  6,  5,  4,  5,
     5,  4,  3,  4,  4,  3,  2,  3,  9,  8,  7,  8,  5,  4,  3,  4,  4,  3,  2,  3,  3,  2,  1,  2,
     8,  7,  6,  7,  4,  3,  2,  3,  3,  2,  1,  2,  2,  1,  0,  1,  15, 14, 13, 14, 11, 10, 9,  10,
     10, 9,  8,  9,  9,  8,  7,  8,  11, 10, 9,  10, 7,  6,  5,  6,  6,  5,  4,  5,  5,  4,  3,  4,
     10, 9,  8,  9,  6,  5,  4,  5,  5,  4,  3,  4,  4,  3,  2,  3,  9,  8,  7,  8,  5,  4,  3,  4,
     4,  3,  2,  3,  3,  2,  1,  2,  16, 15, 14, 15, 12, 11, 10, 11, 11, 10, 9,  10, 10, 9,  8,  9,
     12, 11, 10, 11, 8,  7,  6,  7,  7,  6,  5,  6,  6,  5,  4,  5,  11, 10, 9,  10, 7,  6,  5,  6,
     6,  5,  4,  5,  5,  4,  3,  4,  10, 9,  8,  9,  6,  5,  4,  5,  5,  4,  3,  4,  4,  3,  2,  3,
     20, 19, 18, 19, 16, 15, 14, 15, 15, 14, 13, 14, 14, 13, 12, 13, 16, 15, 14, 15, 12, 11, 10, 11,
     11, 10, 9,  10, 10, 9,  8,  9,  15, 14, 13, 14, 11, 10, 9,  10, 10, 9,  8,  9,  9,  8,  7,  8,
     14, 13, 12, 13, 10, 9,  8,  9,  9,  8,  7,  8,  8,  7,  6,  7},
    {18, 14, 13, 12, 14, 10, 9,  8,  13, 9,  8,  7,  12, 8,  7,  6,  14, 10, 9,  8,  10, 6,  5,  4,
     9,  5,  4,  3,  8,  4,  3,  2,  13, 9,  8,  7,  9,  5,  4,  3,  8,  4,  3,  2,  7,  3,  2,  1,
     12, 8,  7,  6,  8,  4,  3,  2,  7,  3,  2,  1,  6,  2,  1,  0,  19, 15, 14, 13, 15, 11, 10, 9,
     14, 10, 9,  8,  13, 9,  8,  7,  15, 11, 10, 9,  11, 7,  6,  5,  10, 6,  5,  4,  9,  5,  4,  3,
     14, 10, 9,  8,  10, 6,  5,  4,  9,  5,  4,  3,  8,  4,  3,  2,  13, 9,  8,  7,  9,  5,  4,  3,
     8,  4,  3,  2,  7,  3,  2,  1,  20, 16, 15, 14, 16, 12, 11, 10, 15, 11, 10, 9,  14, 10, 9,  8,
     16, 12, 11, 10, 12, 8,  7,  6,  11, 7,  6,  5,  10, 6,  5,  4,  15, 11, 10, 9,  11, 7,  6,  5,
     10, 6,  5,  4,  9,  5,  4,  3,  14, 10, 9,  8,  10, 6,  5,  4,  9,  5,  4,  3,  8,  4,  3,  2,
     24, 20, 19, 18, 20, 16, 15, 14, 19, 15, 14, 13, 18, 14, 13, 12, 20, 16, 15, 14, 16, 12, 11, 10,
     15, 11, 10, 9,  14, 10, 9,  8,  19, 15, 14, 13, 15, 11, 10, 9,  14, 10, 9,  8,  13, 9,  8,  7,
     18, 14, 13, 12, 14, 10, 9,  8,  13, 9,  8,  7,  12, 8,  7,  6},
    {1, 2, 3,  7,  2,  3,  4,  8,  3,  4,  5,  9,  7,  8,  9,  13, 2, 3,  4,  8,  3,  4,  5,  9,
     4, 5, 6,  10, 8,  9,  10, 14, 3,  4,  5,  9,  4,  5,  6,  10, 5, 6,  7,  11, 9,  10, 11, 15,
     7, 8, 9,  13, 8,  9,  10, 14, 9,  10, 11, 15, 13, 14, 15, 19, 0, 1,  2,  6,  1,  2,  3,  7,
     2, 3, 4,  8,  6,  7,  8,  12, 1,  2,  3,  7,  2,  3,  4,  8,  3, 4,  5,  9,  7,  8,  9,  13,
     2, 3, 4,  8,  3,  4,  5,  9,  4,  5,  6,  10, 8,  9,  10, 14, 6, 7,  8,  12, 7,  8,  9,  13,
     8, 9, 10, 14, 12, 13, 14, 18, 1,  2,  3,  7,  2,  3,  4,  8,  3, 4,  5,  9,  7,  8,  9,  13,
     2, 3, 4,  8,  3,  4,  5,  9,  4,  5,  6,  10, 8,  9,  10, 14, 3, 4,  5,  9,  4,  5,  6,  10,
     5, 6, 7,  11, 9,  10, 11, 15, 7,  8,  9,  13, 8,  9,  10, 14, 9, 10, 11, 15, 13, 14, 15, 19,
     2, 3, 4,  8,  3,  4,  5,  9,  4,  5,  6,  10, 8,  9,  10, 14, 3, 4,  5,  9,  4,  5,  6,  10,
     5, 6, 7,  11, 9,  10, 11, 15, 4,  5,  6,  10, 5,  6,  7,  11, 6, 7,  8,  12, 10, 11, 12, 16,
     8, 9, 10, 14, 9,  10, 11, 15, 10, 11, 12, 16, 14, 15, 16, 20},
    {2, 1, 2, 3,  3,  2,  3,  4,  4,  3,  4,  5,  8,  7,  8,  9,  3,  2, 3,  4,  4,  3,  4,  5,
     5, 4, 5, 6,  9,  8,  9,  10, 4,  3,  4,  5,  5,  4,  5,  6,  6,  5, 6,  7,  10, 9,  10, 11,
     8, 7, 8, 9,  9,  8,  9,  10, 10, 9,  10, 11, 14, 13, 14, 15, 1,  0, 1,  2,  2,  1,  2,  3,
     3, 2, 3, 4,  7,  6,  7,  8,  2,  1,  2,  3,  3,  2,  3,  4,  4,  3, 4,  5,  8,  7,  8,  9,
     3, 2, 3, 4,  4,  3,  4,  5,  5,  4,  5,  6,  9,  8,  9,  10, 7,  6, 7,  8,  8,  7,  8,  9,
     9, 8, 9, 10, 13, 12, 13, 14, 2,  1,  2,  3,  3,  2,  3,  4,  4,  3, 4,  5,  8,  7,  8,  9,
     3, 2, 3, 4,  4,  3,  4,  5,  5,  4,  5,  6,  9,  8,  9,  10, 4,  3, 4,  5,  5,  4,  5,  6,
     6, 5, 6, 7,  10, 9,  10, 11, 8,  7,  8,  9,  9,  8,  9,  10, 10, 9, 10, 11, 14, 13, 14, 15,
     3, 2, 3, 4,  4,  3,  4,  5,  5,  4,  5,  6,  9,  8,  9,  10, 4,  3, 4,  5,  5,  4,  5,  6,
     6, 5, 6, 7,  10, 9,  10, 11, 5,  4,  5,  6,  6,  5,  6,  7,  7,  6, 7,  8,  11, 10, 11, 12,
     9, 8, 9, 10, 10, 9,  10, 11, 11, 10, 11, 12, 15, 14, 15, 16},
    {3,  2, 1, 2, 4,  3,  2,  3,  5,  4,  3,  4,  9,  8,  7,  8,  4,  3,  2, 3,  5,  4,  3,  4,
     6,  5, 4, 5, 10, 9,  8,  9,  5,  4,  3,  4,  6,  5,  4,  5,  7,  6,  5, 6,  11, 10, 9,  10,
     9,  8, 7, 8, 10, 9,  8,  9,  11, 10, 9,  10, 15, 14, 13, 14, 2,  1,  0, 1,  3,  2,  1,  2,
     4,  3, 2, 3, 8,  7,  6,  7,  3,  2,  1,  2,  4,  3,  2,  3,  5,  4,  3, 4,  9,  8,  7,  8,
     4,  3, 2, 3, 5,  4,  3,  4,  6,  5,  4,  5,  10, 9,  8,  9,  8,  7,  6, 7,  9,  8,  7,  8,
     10, 9, 8, 9, 14, 13, 12, 13, 3,  2,  1,  2,  4,  3,  2,  3,  5,  4,  3, 4,  9,  8,  7,  8,
     4,  3, 2, 3, 5,  4,  3,  4,  6,  5,  4,  5,  10, 9,  8,  9,  5,  4,  3, 4,  6,  5,  4,  5,
     7,  6, 5, 6, 11, 10, 9,  10, 9,  8,  7,  8,  10, 9,  8,  9,  11, 10, 9, 10, 15, 14, 13, 14,
     4,  3, 2, 3, 5,  4,  3,  4,  6,  5,  4,  5,  10, 9,  8,  9,  5,  4,  3, 4,  6,  5,  4,  5,
     7,  6, 5, 6, 11, 10, 9,  10, 6,  5,  4,  5,  7,  6,  5,  6,  8,  7,  6, 7,  12, 11, 10, 11,
     10, 9, 8, 9, 11, 10, 9,  10, 12, 11, 10, 11, 16, 15, 14, 15},
    {7,  3,  2, 1, 8,  4,  3,  2,  9,  5,  4,  3,  13, 9,  8,  7,  8,  4,  3,  2, 9,  5,  4,  3,
     10, 6,  5, 4, 14, 10, 9,  8,  9,  5,  4,  3,  10, 6,  5,  4,  11, 7,  6,  5, 15, 11, 10, 9,
     13, 9,  8, 7, 14, 10, 9,  8,  15, 11, 10, 9,  19, 15, 14, 13, 6,  2,  1,  0, 7,  3,  2,  1,
     8,  4,  3, 2, 12, 8,  7,  6,  7,  3,  2,  1,  8,  4,  3,  2,  9,  5,  4,  3, 13, 9,  8,  7,
     8,  4,  3, 2, 9,  5,  4,  3,  10, 6,  5,  4,  14, 10, 9,  8,  12, 8,  7,  6, 13, 9,  8,  7,
     14, 10, 9, 8, 18, 14, 13, 12, 7,  3,  2,  1,  8,  4,  3,  2,  9,  5,  4,  3, 13, 9,  8,  7,
     8,  4,  3, 2, 9,  5,  4,  3,  10, 6,  5,  4,  14, 10, 9,  8,  9,  5,  4,  3, 10, 6,  5,  4,
     11, 7,  6, 5, 15, 11, 10, 9,  13, 9,  8,  7,  14, 10, 9,  8,  15, 11, 10, 9, 19, 15, 14, 13,
     8,  4,  3, 2, 9,  5,  4,  3,  10, 6,  5,  4,  14, 10, 9,  8,  9,  5,  4,  3, 10, 6,  5,  4,
     11, 7,  6, 5, 15, 11, 10, 9,  10, 6,  5,  4,  11, 7,  6,  5,  12, 8,  7,  6, 16, 12, 11, 10,
     14, 10, 9, 8, 15, 11, 10, 9,  16, 12, 11, 10, 20, 16, 15, 14},
    {2, 3,  4,  8,  1, 2, 3,  7,  2, 3,  4,  8,  3,  4,  5,  9,  3, 4, 5,  9,  2, 3,  4,  8,
     3, 4,  5,  9,  4, 5, 6,  10, 4, 5,  6,  10, 3,  4,  5,  9,  4, 5, 6,  10, 5, 6,  7,  11,
     8, 9,  10, 14, 7, 8, 9,  13, 8, 9,  10, 14, 9,  10, 11, 15, 1, 2, 3,  7,  0, 1,  2,  6,
     1, 2,  3,  7,  2, 3, 4,  8,  2, 3,  4,  8,  1,  2,  3,  7,  2, 3, 4,  8,  3, 4,  5,  9,
     3, 4,  5,  9,  2, 3, 4,  8,  3, 4,  5,  9,  4,  5,  6,  10, 7, 8, 9,  13, 6, 7,  8,  12,
     7, 8,  9,  13, 8, 9, 10, 14, 2, 3,  4,  8,  1,  2,  3,  7,  2, 3, 4,  8,  3, 4,  5,  9,
     3, 4,  5,  9,  2, 3, 4,  8,  3, 4,  5,  9,  4,  5,  6,  10, 4, 5, 6,  10, 3, 4,  5,  9,
     4, 5,  6,  10, 5, 6, 7,  11, 8, 9,  10, 14, 7,  8,  9,  13, 8, 9, 10, 14, 9, 10, 11, 15,
     3, 4,  5,  9,  2, 3, 4,  8,  3, 4,  5,  9,  4,  5,  6,  10, 4, 5, 6,  10, 3, 4,  5,  9,
     4, 5,  6,  10, 5, 6, 7,  11, 5, 6,  7,  11, 4,  5,  6,  10, 5, 6, 7,  11, 6, 7,  8,  12,
     9, 10, 11, 15, 8, 9, 10, 14, 9, 10, 11, 15, 10, 11, 12, 16},
    {3, 2, 3, 4, 2, 1,  2,  3,  3,  2,  3,  4,  4, 3,  4,  5, 4,  3,  4,  5,  3,  2, 3, 4,  4, 3,
     4, 5, 5, 4, 5, 6,  5,  4,  5,  6,  4,  3,  4, 5,  5,  4, 5,  6,  6,  5,  6,  7, 9, 8,  9, 10,
     8, 7, 8, 9, 9, 8,  9,  10, 10, 9,  10, 11, 2, 1,  2,  3, 1,  0,  1,  2,  2,  1, 2, 3,  3, 2,
     3, 4, 3, 2, 3, 4,  2,  1,  2,  3,  3,  2,  3, 4,  4,  3, 4,  5,  4,  3,  4,  5, 3, 2,  3, 4,
     4, 3, 4, 5, 5, 4,  5,  6,  8,  7,  8,  9,  7, 6,  7,  8, 8,  7,  8,  9,  9,  8, 9, 10, 3, 2,
     3, 4, 2, 1, 2, 3,  3,  2,  3,  4,  4,  3,  4, 5,  4,  3, 4,  5,  3,  2,  3,  4, 4, 3,  4, 5,
     5, 4, 5, 6, 5, 4,  5,  6,  4,  3,  4,  5,  5, 4,  5,  6, 6,  5,  6,  7,  9,  8, 9, 10, 8, 7,
     8, 9, 9, 8, 9, 10, 10, 9,  10, 11, 4,  3,  4, 5,  3,  2, 3,  4,  4,  3,  4,  5, 5, 4,  5, 6,
     5, 4, 5, 6, 4, 3,  4,  5,  5,  4,  5,  6,  6, 5,  6,  7, 6,  5,  6,  7,  5,  4, 5, 6,  6, 5,
     6, 7, 7, 6, 7, 8,  10, 9,  10, 11, 9,  8,  9, 10, 10, 9, 10, 11, 11, 10, 11, 12},
    {4, 3, 2,  3, 3,  2, 1,  2,  4,  3,  2,  3,  5, 4, 3,  4,  5, 4,  3,  4,  4,  3, 2,  3, 5, 4,
     3, 4, 6,  5, 4,  5, 6,  5,  4,  5,  5,  4,  3, 4, 6,  5,  4, 5,  7,  6,  5,  6, 10, 9, 8, 9,
     9, 8, 7,  8, 10, 9, 8,  9,  11, 10, 9,  10, 3, 2, 1,  2,  2, 1,  0,  1,  3,  2, 1,  2, 4, 3,
     2, 3, 4,  3, 2,  3, 3,  2,  1,  2,  4,  3,  2, 3, 5,  4,  3, 4,  5,  4,  3,  4, 4,  3, 2, 3,
     5, 4, 3,  4, 6,  5, 4,  5,  9,  8,  7,  8,  8, 7, 6,  7,  9, 8,  7,  8,  10, 9, 8,  9, 4, 3,
     2, 3, 3,  2, 1,  2, 4,  3,  2,  3,  5,  4,  3, 4, 5,  4,  3, 4,  4,  3,  2,  3, 5,  4, 3, 4,
     6, 5, 4,  5, 6,  5, 4,  5,  5,  4,  3,  4,  6, 5, 4,  5,  7, 6,  5,  6,  10, 9, 8,  9, 9, 8,
     7, 8, 10, 9, 8,  9, 11, 10, 9,  10, 5,  4,  3, 4, 4,  3,  2, 3,  5,  4,  3,  4, 6,  5, 4, 5,
     6, 5, 4,  5, 5,  4, 3,  4,  6,  5,  4,  5,  7, 6, 5,  6,  7, 6,  5,  6,  6,  5, 4,  5, 7, 6,
     5, 6, 8,  7, 6,  7, 11, 10, 9,  10, 10, 9,  8, 9, 11, 10, 9, 10, 12, 11, 10, 11},
    {8,  4,  3,  2, 7,  3,  2, 1, 8,  4,  3,  2, 9,  5,  4,  3, 9,  5,  4, 3, 8,  4,  3,  2,
     9,  5,  4,  3, 10, 6,  5, 4, 10, 6,  5,  4, 9,  5,  4,  3, 10, 6,  5, 4, 11, 7,  6,  5,
     14, 10, 9,  8, 13, 9,  8, 7, 14, 10, 9,  8, 15, 11, 10, 9, 7,  3,  2, 1, 6,  2,  1,  0,
     7,  3,  2,  1, 8,  4,  3, 2, 8,  4,  3,  2, 7,  3,  2,  1, 8,  4,  3, 2, 9,  5,  4,  3,
     9,  5,  4,  3, 8,  4,  3, 2, 9,  5,  4,  3, 10, 6,  5,  4, 13, 9,  8, 7, 12, 8,  7,  6,
     13, 9,  8,  7, 14, 10, 9, 8, 8,  4,  3,  2, 7,  3,  2,  1, 8,  4,  3, 2, 9,  5,  4,  3,
     9,  5,  4,  3, 8,  4,  3, 2, 9,  5,  4,  3, 10, 6,  5,  4, 10, 6,  5, 4, 9,  5,  4,  3,
     10, 6,  5,  4, 11, 7,  6, 5, 14, 10, 9,  8, 13, 9,  8,  7, 14, 10, 9, 8, 15, 11, 10, 9,
     9,  5,  4,  3, 8,  4,  3, 2, 9,  5,  4,  3, 10, 6,  5,  4, 10, 6,  5, 4, 9,  5,  4,  3,
     10, 6,  5,  4, 11, 7,  6, 5, 11, 7,  6,  5, 10, 6,  5,  4, 11, 7,  6, 5, 12, 8,  7,  6,
     15, 11, 10, 9, 14, 10, 9, 8, 15, 11, 10, 9, 16, 12, 11, 10},
    {3,  4,  5,  9,  2, 3,  4,  8,  1, 2,  3,  7,  2, 3,  4,  8,  4, 5, 6,  10, 3, 4, 5,  9,
     2,  3,  4,  8,  3, 4,  5,  9,  5, 6,  7,  11, 4, 5,  6,  10, 3, 4, 5,  9,  4, 5, 6,  10,
     9,  10, 11, 15, 8, 9,  10, 14, 7, 8,  9,  13, 8, 9,  10, 14, 2, 3, 4,  8,  1, 2, 3,  7,
     0,  1,  2,  6,  1, 2,  3,  7,  3, 4,  5,  9,  2, 3,  4,  8,  1, 2, 3,  7,  2, 3, 4,  8,
     4,  5,  6,  10, 3, 4,  5,  9,  2, 3,  4,  8,  3, 4,  5,  9,  8, 9, 10, 14, 7, 8, 9,  13,
     6,  7,  8,  12, 7, 8,  9,  13, 3, 4,  5,  9,  2, 3,  4,  8,  1, 2, 3,  7,  2, 3, 4,  8,
     4,  5,  6,  10, 3, 4,  5,  9,  2, 3,  4,  8,  3, 4,  5,  9,  5, 6, 7,  11, 4, 5, 6,  10,
     3,  4,  5,  9,  4, 5,  6,  10, 9, 10, 11, 15, 8, 9,  10, 14, 7, 8, 9,  13, 8, 9, 10, 14,
     4,  5,  6,  10, 3, 4,  5,  9,  2, 3,  4,  8,  3, 4,  5,  9,  5, 6, 7,  11, 4, 5, 6,  10,
     3,  4,  5,  9,  4, 5,  6,  10, 6, 7,  8,  12, 5, 6,  7,  11, 4, 5, 6,  10, 5, 6, 7,  11,
     10, 11, 12, 16, 9, 10, 11, 15, 8, 9,  10, 14, 9, 10, 11, 15},
    {4, 3,  4, 5,  3, 2, 3,  4,  2,  1,  2,  3,  3,  2,  3, 4, 5, 4,  5,  6, 4,  3, 4,  5,  3,  2,
     3, 4,  4, 3,  4, 5, 6,  5,  6,  7,  5,  4,  5,  6,  4, 3, 4, 5,  5,  4, 5,  6, 10, 9,  10, 11,
     9, 8,  9, 10, 8, 7, 8,  9,  9,  8,  9,  10, 3,  2,  3, 4, 2, 1,  2,  3, 1,  0, 1,  2,  2,  1,
     2, 3,  4, 3,  4, 5, 3,  2,  3,  4,  2,  1,  2,  3,  3, 2, 3, 4,  5,  4, 5,  6, 4,  3,  4,  5,
     3, 2,  3, 4,  4, 3, 4,  5,  9,  8,  9,  10, 8,  7,  8, 9, 7, 6,  7,  8, 8,  7, 8,  9,  4,  3,
     4, 5,  3, 2,  3, 4, 2,  1,  2,  3,  3,  2,  3,  4,  5, 4, 5, 6,  4,  3, 4,  5, 3,  2,  3,  4,
     4, 3,  4, 5,  6, 5, 6,  7,  5,  4,  5,  6,  4,  3,  4, 5, 5, 4,  5,  6, 10, 9, 10, 11, 9,  8,
     9, 10, 8, 7,  8, 9, 9,  8,  9,  10, 5,  4,  5,  6,  4, 3, 4, 5,  3,  2, 3,  4, 4,  3,  4,  5,
     6, 5,  6, 7,  5, 4, 5,  6,  4,  3,  4,  5,  5,  4,  5, 6, 7, 6,  7,  8, 6,  5, 6,  7,  5,  4,
     5, 6,  6, 5,  6, 7, 11, 10, 11, 12, 10, 9,  10, 11, 9, 8, 9, 10, 10, 9, 10, 11},
    {5,  4, 3, 4, 4, 3, 2,  3,  3,  2,  1,  2,  4, 3,  2,  3, 6, 5, 4,  5,  5,  4,  3,  4,  4,  3,
     2,  3, 5, 4, 3, 4, 7,  6,  5,  6,  6,  5,  4, 5,  5,  4, 3, 4, 6,  5,  4,  5,  11, 10, 9,  10,
     10, 9, 8, 9, 9, 8, 7,  8,  10, 9,  8,  9,  4, 3,  2,  3, 3, 2, 1,  2,  2,  1,  0,  1,  3,  2,
     1,  2, 5, 4, 3, 4, 4,  3,  2,  3,  3,  2,  1, 2,  4,  3, 2, 3, 6,  5,  4,  5,  5,  4,  3,  4,
     4,  3, 2, 3, 5, 4, 3,  4,  10, 9,  8,  9,  9, 8,  7,  8, 8, 7, 6,  7,  9,  8,  7,  8,  5,  4,
     3,  4, 4, 3, 2, 3, 3,  2,  1,  2,  4,  3,  2, 3,  6,  5, 4, 5, 5,  4,  3,  4,  4,  3,  2,  3,
     5,  4, 3, 4, 7, 6, 5,  6,  6,  5,  4,  5,  5, 4,  3,  4, 6, 5, 4,  5,  11, 10, 9,  10, 10, 9,
     8,  9, 9, 8, 7, 8, 10, 9,  8,  9,  6,  5,  4, 5,  5,  4, 3, 4, 4,  3,  2,  3,  5,  4,  3,  4,
     7,  6, 5, 6, 6, 5, 4,  5,  5,  4,  3,  4,  6, 5,  4,  5, 8, 7, 6,  7,  7,  6,  5,  6,  6,  5,
     4,  5, 7, 6, 5, 6, 12, 11, 10, 11, 11, 10, 9, 10, 10, 9, 8, 9, 11, 10, 9,  10},
    {9,  5,  4,  3,  8,  4,  3,  2, 7,  3,  2,  1, 8,  4,  3,  2, 10, 6,  5, 4, 9,  5,  4, 3,
     8,  4,  3,  2,  9,  5,  4,  3, 11, 7,  6,  5, 10, 6,  5,  4, 9,  5,  4, 3, 10, 6,  5, 4,
     15, 11, 10, 9,  14, 10, 9,  8, 13, 9,  8,  7, 14, 10, 9,  8, 8,  4,  3, 2, 7,  3,  2, 1,
     6,  2,  1,  0,  7,  3,  2,  1, 9,  5,  4,  3, 8,  4,  3,  2, 7,  3,  2, 1, 8,  4,  3, 2,
     10, 6,  5,  4,  9,  5,  4,  3, 8,  4,  3,  2, 9,  5,  4,  3, 14, 10, 9, 8, 13, 9,  8, 7,
     12, 8,  7,  6,  13, 9,  8,  7, 9,  5,  4,  3, 8,  4,  3,  2, 7,  3,  2, 1, 8,  4,  3, 2,
     10, 6,  5,  4,  9,  5,  4,  3, 8,  4,  3,  2, 9,  5,  4,  3, 11, 7,  6, 5, 10, 6,  5, 4,
     9,  5,  4,  3,  10, 6,  5,  4, 15, 11, 10, 9, 14, 10, 9,  8, 13, 9,  8, 7, 14, 10, 9, 8,
     10, 6,  5,  4,  9,  5,  4,  3, 8,  4,  3,  2, 9,  5,  4,  3, 11, 7,  6, 5, 10, 6,  5, 4,
     9,  5,  4,  3,  10, 6,  5,  4, 12, 8,  7,  6, 11, 7,  6,  5, 10, 6,  5, 4, 11, 7,  6, 5,
     16, 12, 11, 10, 15, 11, 10, 9, 14, 10, 9,  8, 15, 11, 10, 9},
    {7,  8,  9,  13, 3,  4,  5,  9,  2,  3,  4,  8,  1, 2,  3,  7,  8,  9,  10, 14, 4, 5, 6,  10,
     3,  4,  5,  9,  2,  3,  4,  8,  9,  10, 11, 15, 5, 6,  7,  11, 4,  5,  6,  10, 3, 4, 5,  9,
     13, 14, 15, 19, 9,  10, 11, 15, 8,  9,  10, 14, 7, 8,  9,  13, 6,  7,  8,  12, 2, 3, 4,  8,
     1,  2,  3,  7,  0,  1,  2,  6,  7,  8,  9,  13, 3, 4,  5,  9,  2,  3,  4,  8,  1, 2, 3,  7,
     8,  9,  10, 14, 4,  5,  6,  10, 3,  4,  5,  9,  2, 3,  4,  8,  12, 13, 14, 18, 8, 9, 10, 14,
     7,  8,  9,  13, 6,  7,  8,  12, 7,  8,  9,  13, 3, 4,  5,  9,  2,  3,  4,  8,  1, 2, 3,  7,
     8,  9,  10, 14, 4,  5,  6,  10, 3,  4,  5,  9,  2, 3,  4,  8,  9,  10, 11, 15, 5, 6, 7,  11,
     4,  5,  6,  10, 3,  4,  5,  9,  13, 14, 15, 19, 9, 10, 11, 15, 8,  9,  10, 14, 7, 8, 9,  13,
     8,  9,  10, 14, 4,  5,  6,  10, 3,  4,  5,  9,  2, 3,  4,  8,  9,  10, 11, 15, 5, 6, 7,  11,
     4,  5,  6,  10, 3,  4,  5,  9,  10, 11, 12, 16, 6, 7,  8,  12, 5,  6,  7,  11, 4, 5, 6,  10,
     14, 15, 16, 20, 10, 11, 12, 16, 9,  10, 11, 15, 8, 9,  10, 14},
    {8,  7,  8,  9,  4,  3,  4,  5,  3,  2,  3,  4,  2,  1, 2,  3,  9,  8,  9,  10, 5, 4, 5, 6,
     4,  3,  4,  5,  3,  2,  3,  4,  10, 9,  10, 11, 6,  5, 6,  7,  5,  4,  5,  6,  4, 3, 4, 5,
     14, 13, 14, 15, 10, 9,  10, 11, 9,  8,  9,  10, 8,  7, 8,  9,  7,  6,  7,  8,  3, 2, 3, 4,
     2,  1,  2,  3,  1,  0,  1,  2,  8,  7,  8,  9,  4,  3, 4,  5,  3,  2,  3,  4,  2, 1, 2, 3,
     9,  8,  9,  10, 5,  4,  5,  6,  4,  3,  4,  5,  3,  2, 3,  4,  13, 12, 13, 14, 9, 8, 9, 10,
     8,  7,  8,  9,  7,  6,  7,  8,  8,  7,  8,  9,  4,  3, 4,  5,  3,  2,  3,  4,  2, 1, 2, 3,
     9,  8,  9,  10, 5,  4,  5,  6,  4,  3,  4,  5,  3,  2, 3,  4,  10, 9,  10, 11, 6, 5, 6, 7,
     5,  4,  5,  6,  4,  3,  4,  5,  14, 13, 14, 15, 10, 9, 10, 11, 9,  8,  9,  10, 8, 7, 8, 9,
     9,  8,  9,  10, 5,  4,  5,  6,  4,  3,  4,  5,  3,  2, 3,  4,  10, 9,  10, 11, 6, 5, 6, 7,
     5,  4,  5,  6,  4,  3,  4,  5,  11, 10, 11, 12, 7,  6, 7,  8,  6,  5,  6,  7,  5, 4, 5, 6,
     15, 14, 15, 16, 11, 10, 11, 12, 10, 9,  10, 11, 9,  8, 9,  10},
    {9,  8,  7,  8,  5,  4,  3,  4,  4,  3,  2,  3,  3,  2,  1, 2,  10, 9,  8,  9,  6,  5, 4, 5,
     5,  4,  3,  4,  4,  3,  2,  3,  11, 10, 9,  10, 7,  6,  5, 6,  6,  5,  4,  5,  5,  4, 3, 4,
     15, 14, 13, 14, 11, 10, 9,  10, 10, 9,  8,  9,  9,  8,  7, 8,  8,  7,  6,  7,  4,  3, 2, 3,
     3,  2,  1,  2,  2,  1,  0,  1,  9,  8,  7,  8,  5,  4,  3, 4,  4,  3,  2,  3,  3,  2, 1, 2,
     10, 9,  8,  9,  6,  5,  4,  5,  5,  4,  3,  4,  4,  3,  2, 3,  14, 13, 12, 13, 10, 9, 8, 9,
     9,  8,  7,  8,  8,  7,  6,  7,  9,  8,  7,  8,  5,  4,  3, 4,  4,  3,  2,  3,  3,  2, 1, 2,
     10, 9,  8,  9,  6,  5,  4,  5,  5,  4,  3,  4,  4,  3,  2, 3,  11, 10, 9,  10, 7,  6, 5, 6,
     6,  5,  4,  5,  5,  4,  3,  4,  15, 14, 13, 14, 11, 10, 9, 10, 10, 9,  8,  9,  9,  8, 7, 8,
     10, 9,  8,  9,  6,  5,  4,  5,  5,  4,  3,  4,  4,  3,  2, 3,  11, 10, 9,  10, 7,  6, 5, 6,
     6,  5,  4,  5,  5,  4,  3,  4,  12, 11, 10, 11, 8,  7,  6, 7,  7,  6,  5,  6,  6,  5, 4, 5,
     16, 15, 14, 15, 12, 11, 10, 11, 11, 10, 9,  10, 10, 9,  8, 9},
    {13, 9,  8,  7,  9,  5,  4,  3,  8,  4,  3,  2,  7,  3,  2,  1, 14, 10, 9,  8,  10, 6,  5, 4,
     9,  5,  4,  3,  8,  4,  3,  2,  15, 11, 10, 9,  11, 7,  6,  5, 10, 6,  5,  4,  9,  5,  4, 3,
     19, 15, 14, 13, 15, 11, 10, 9,  14, 10, 9,  8,  13, 9,  8,  7, 12, 8,  7,  6,  8,  4,  3, 2,
     7,  3,  2,  1,  6,  2,  1,  0,  13, 9,  8,  7,  9,  5,  4,  3, 8,  4,  3,  2,  7,  3,  2, 1,
     14, 10, 9,  8,  10, 6,  5,  4,  9,  5,  4,  3,  8,  4,  3,  2, 18, 14, 13, 12, 14, 10, 9, 8,
     13, 9,  8,  7,  12, 8,  7,  6,  13, 9,  8,  7,  9,  5,  4,  3, 8,  4,  3,  2,  7,  3,  2, 1,
     14, 10, 9,  8,  10, 6,  5,  4,  9,  5,  4,  3,  8,  4,  3,  2, 15, 11, 10, 9,  11, 7,  6, 5,
     10, 6,  5,  4,  9,  5,  4,  3,  19, 15, 14, 13, 15, 11, 10, 9, 14, 10, 9,  8,  13, 9,  8, 7,
     14, 10, 9,  8,  10, 6,  5,  4,  9,  5,  4,  3,  8,  4,  3,  2, 15, 11, 10, 9,  11, 7,  6, 5,
     10, 6,  5,  4,  9,  5,  4,  3,  16, 12, 11, 10, 12, 8,  7,  6, 11, 7,  6,  5,  10, 6,  5, 4,
     20, 16, 15, 14, 16, 12, 11, 10, 15, 11, 10, 9,  14, 10, 9,  8},
    {2, 3, 4, 8,  3, 4, 5,  9,  4, 5, 6, 10, 8,  9,  10, 14, 1, 2, 3, 7,  2, 3,  4,  8,
     3, 4, 5, 9,  7, 8, 9,  13, 2, 3, 4, 8,  3,  4,  5,  9,  4, 5, 6, 10, 8, 9,  10, 14,
     3, 4, 5, 9,  4, 5, 6,  10, 5, 6, 7, 11, 9,  10, 11, 15, 1, 2, 3, 7,  2, 3,  4,  8,
     3, 4, 5, 9,  7, 8, 9,  13, 0, 1, 2, 6,  1,  2,  3,  7,  2, 3, 4, 8,  6, 7,  8,  12,
     1, 2, 3, 7,  2, 3, 4,  8,  3, 4, 5, 9,  7,  8,  9,  13, 2, 3, 4, 8,  3, 4,  5,  9,
     4, 5, 6, 10, 8, 9, 10, 14, 2, 3, 4, 8,  3,  4,  5,  9,  4, 5, 6, 10, 8, 9,  10, 14,
     1, 2, 3, 7,  2, 3, 4,  8,  3, 4, 5, 9,  7,  8,  9,  13, 2, 3, 4, 8,  3, 4,  5,  9,
     4, 5, 6, 10, 8, 9, 10, 14, 3, 4, 5, 9,  4,  5,  6,  10, 5, 6, 7, 11, 9, 10, 11, 15,
     3, 4, 5, 9,  4, 5, 6,  10, 5, 6, 7, 11, 9,  10, 11, 15, 2, 3, 4, 8,  3, 4,  5,  9,
     4, 5, 6, 10, 8, 9, 10, 14, 3, 4, 5, 9,  4,  5,  6,  10, 5, 6, 7, 11, 9, 10, 11, 15,
     4, 5, 6, 10, 5, 6, 7,  11, 6, 7, 8, 12, 10, 11, 12, 16},
    {3, 2, 3,  4, 4,  3,  4,  5, 5,  4,  5,  6,  9, 8,  9, 10, 2, 1, 2,  3,  3,  2,  3,  4,  4,  3,
     4, 5, 8,  7, 8,  9,  3,  2, 3,  4,  4,  3,  4, 5,  5, 4,  5, 6, 9,  8,  9,  10, 4,  3,  4,  5,
     5, 4, 5,  6, 6,  5,  6,  7, 10, 9,  10, 11, 2, 1,  2, 3,  3, 2, 3,  4,  4,  3,  4,  5,  8,  7,
     8, 9, 1,  0, 1,  2,  2,  1, 2,  3,  3,  2,  3, 4,  7, 6,  7, 8, 2,  1,  2,  3,  3,  2,  3,  4,
     4, 3, 4,  5, 8,  7,  8,  9, 3,  2,  3,  4,  4, 3,  4, 5,  5, 4, 5,  6,  9,  8,  9,  10, 3,  2,
     3, 4, 4,  3, 4,  5,  5,  4, 5,  6,  9,  8,  9, 10, 2, 1,  2, 3, 3,  2,  3,  4,  4,  3,  4,  5,
     8, 7, 8,  9, 3,  2,  3,  4, 4,  3,  4,  5,  5, 4,  5, 6,  9, 8, 9,  10, 4,  3,  4,  5,  5,  4,
     5, 6, 6,  5, 6,  7,  10, 9, 10, 11, 4,  3,  4, 5,  5, 4,  5, 6, 6,  5,  6,  7,  10, 9,  10, 11,
     3, 2, 3,  4, 4,  3,  4,  5, 5,  4,  5,  6,  9, 8,  9, 10, 4, 3, 4,  5,  5,  4,  5,  6,  6,  5,
     6, 7, 10, 9, 10, 11, 5,  4, 5,  6,  6,  5,  6, 7,  7, 6,  7, 8, 11, 10, 11, 12},
    {4, 3, 2,  3,  5, 4,  3,  4,  6,  5,  4,  5,  10, 9, 8, 9, 3,  2, 1,  2,  4,  3, 2,  3,  5, 4,
     3, 4, 9,  8,  7, 8,  4,  3,  2,  3,  5,  4,  3,  4, 6, 5, 4,  5, 10, 9,  8,  9, 5,  4,  3, 4,
     6, 5, 4,  5,  7, 6,  5,  6,  11, 10, 9,  10, 3,  2, 1, 2, 4,  3, 2,  3,  5,  4, 3,  4,  9, 8,
     7, 8, 2,  1,  0, 1,  3,  2,  1,  2,  4,  3,  2,  3, 8, 7, 6,  7, 3,  2,  1,  2, 4,  3,  2, 3,
     5, 4, 3,  4,  9, 8,  7,  8,  4,  3,  2,  3,  5,  4, 3, 4, 6,  5, 4,  5,  10, 9, 8,  9,  4, 3,
     2, 3, 5,  4,  3, 4,  6,  5,  4,  5,  10, 9,  8,  9, 3, 2, 1,  2, 4,  3,  2,  3, 5,  4,  3, 4,
     9, 8, 7,  8,  4, 3,  2,  3,  5,  4,  3,  4,  6,  5, 4, 5, 10, 9, 8,  9,  5,  4, 3,  4,  6, 5,
     4, 5, 7,  6,  5, 6,  11, 10, 9,  10, 5,  4,  3,  4, 6, 5, 4,  5, 7,  6,  5,  6, 11, 10, 9, 10,
     4, 3, 2,  3,  5, 4,  3,  4,  6,  5,  4,  5,  10, 9, 8, 9, 5,  4, 3,  4,  6,  5, 4,  5,  7, 6,
     5, 6, 11, 10, 9, 10, 6,  5,  4,  5,  7,  6,  5,  6, 8, 7, 6,  7, 12, 11, 10, 11},
    {8,  4, 3, 2, 9,  5,  4, 3, 10, 6, 5, 4, 14, 10, 9,  8, 7,  3, 2, 1, 8,  4,  3,  2,
     9,  5, 4, 3, 13, 9,  8, 7, 8,  4, 3, 2, 9,  5,  4,  3, 10, 6, 5, 4, 14, 10, 9,  8,
     9,  5, 4, 3, 10, 6,  5, 4, 11, 7, 6, 5, 15, 11, 10, 9, 7,  3, 2, 1, 8,  4,  3,  2,
     9,  5, 4, 3, 13, 9,  8, 7, 6,  2, 1, 0, 7,  3,  2,  1, 8,  4, 3, 2, 12, 8,  7,  6,
     7,  3, 2, 1, 8,  4,  3, 2, 9,  5, 4, 3, 13, 9,  8,  7, 8,  4, 3, 2, 9,  5,  4,  3,
     10, 6, 5, 4, 14, 10, 9, 8, 8,  4, 3, 2, 9,  5,  4,  3, 10, 6, 5, 4, 14, 10, 9,  8,
     7,  3, 2, 1, 8,  4,  3, 2, 9,  5, 4, 3, 13, 9,  8,  7, 8,  4, 3, 2, 9,  5,  4,  3,
     10, 6, 5, 4, 14, 10, 9, 8, 9,  5, 4, 3, 10, 6,  5,  4, 11, 7, 6, 5, 15, 11, 10, 9,
     9,  5, 4, 3, 10, 6,  5, 4, 11, 7, 6, 5, 15, 11, 10, 9, 8,  4, 3, 2, 9,  5,  4,  3,
     10, 6, 5, 4, 14, 10, 9, 8, 9,  5, 4, 3, 10, 6,  5,  4, 11, 7, 6, 5, 15, 11, 10, 9,
     10, 6, 5, 4, 11, 7,  6, 5, 12, 8, 7, 6, 16, 12, 11, 10},
    {3, 4,  5, 9, 2, 3,  4, 8,  3, 4,  5, 9,  4, 5,  6, 10, 2, 3,  4, 8,  1, 2,  3, 7,  2, 3,
     4, 8,  3, 4, 5, 9,  3, 4,  5, 9,  2, 3,  4, 8,  3, 4,  5, 9,  4, 5,  6, 10, 4, 5,  6, 10,
     3, 4,  5, 9, 4, 5,  6, 10, 5, 6,  7, 11, 2, 3,  4, 8,  1, 2,  3, 7,  2, 3,  4, 8,  3, 4,
     5, 9,  1, 2, 3, 7,  0, 1,  2, 6,  1, 2,  3, 7,  2, 3,  4, 8,  2, 3,  4, 8,  1, 2,  3, 7,
     2, 3,  4, 8, 3, 4,  5, 9,  3, 4,  5, 9,  2, 3,  4, 8,  3, 4,  5, 9,  4, 5,  6, 10, 3, 4,
     5, 9,  2, 3, 4, 8,  3, 4,  5, 9,  4, 5,  6, 10, 2, 3,  4, 8,  1, 2,  3, 7,  2, 3,  4, 8,
     3, 4,  5, 9, 3, 4,  5, 9,  2, 3,  4, 8,  3, 4,  5, 9,  4, 5,  6, 10, 4, 5,  6, 10, 3, 4,
     5, 9,  4, 5, 6, 10, 5, 6,  7, 11, 4, 5,  6, 10, 3, 4,  5, 9,  4, 5,  6, 10, 5, 6,  7, 11,
     3, 4,  5, 9, 2, 3,  4, 8,  3, 4,  5, 9,  4, 5,  6, 10, 4, 5,  6, 10, 3, 4,  5, 9,  4, 5,
     6, 10, 5, 6, 7, 11, 5, 6,  7, 11, 4, 5,  6, 10, 5, 6,  7, 11, 6, 7,  8, 12},
    {4, 3, 4, 5, 3, 2, 3, 4, 4, 3, 4, 5, 5, 4, 5, 6, 3, 2, 3, 4, 2, 1, 2, 3, 3, 2, 3, 4, 4,
     3, 4, 5, 4, 3, 4, 5, 3, 2, 3, 4, 4, 3, 4, 5, 5, 4, 5, 6, 5, 4, 5, 6, 4, 3, 4, 5, 5, 4,
     5, 6, 6, 5, 6, 7, 3, 2, 3, 4, 2, 1, 2, 3, 3, 2, 3, 4, 4, 3, 4, 5, 2, 1, 2, 3, 1, 0, 1,
     2, 2, 1, 2, 3, 3, 2, 3, 4, 3, 2, 3, 4, 2, 1, 2, 3, 3, 2, 3, 4, 4, 3, 4, 5, 4, 3, 4, 5,
     3, 2, 3, 4, 4, 3, 4, 5, 5, 4, 5, 6, 4, 3, 4, 5, 3, 2, 3, 4, 4, 3, 4, 5, 5, 4, 5, 6, 3,
     2, 3, 4, 2, 1, 2, 3, 3, 2, 3, 4, 4, 3, 4, 5, 4, 3, 4, 5, 3, 2, 3, 4, 4, 3, 4, 5, 5, 4,
     5, 6, 5, 4, 5, 6, 4, 3, 4, 5, 5, 4, 5, 6, 6, 5, 6, 7, 5, 4, 5, 6, 4, 3, 4, 5, 5, 4, 5,
     6, 6, 5, 6, 7, 4, 3, 4, 5, 3, 2, 3, 4, 4, 3, 4, 5, 5, 4, 5, 6, 5, 4, 5, 6, 4, 3, 4, 5,
     5, 4, 5, 6, 6, 5, 6, 7, 6, 5, 6, 7, 5, 4, 5, 6, 6, 5, 6, 7, 7, 6, 7, 8},
    {5, 4, 3, 4, 4, 3, 2, 3, 5, 4, 3, 4, 6, 5, 4, 5, 4, 3, 2, 3, 3, 2, 1, 2, 4, 3, 2, 3, 5,
     4, 3, 4, 5, 4, 3, 4, 4, 3, 2, 3, 5, 4, 3, 4, 6, 5, 4, 5, 6, 5, 4, 5, 5, 4, 3, 4, 6, 5,
     4, 5, 7, 6, 5, 6, 4, 3, 2, 3, 3, 2, 1, 2, 4, 3, 2, 3, 5, 4, 3, 4, 3, 2, 1, 2, 2, 1, 0,
     1, 3, 2, 1, 2, 4, 3, 2, 3, 4, 3, 2, 3, 3, 2, 1, 2, 4, 3, 2, 3, 5, 4, 3, 4, 5, 4, 3, 4,
     4, 3, 2, 3, 5, 4, 3, 4, 6, 5, 4, 5, 5, 4, 3, 4, 4, 3, 2, 3, 5, 4, 3, 4, 6, 5, 4, 5, 4,
     3, 2, 3, 3, 2, 1, 2, 4, 3, 2, 3, 5, 4, 3, 4, 5, 4, 3, 4, 4, 3, 2, 3, 5, 4, 3, 4, 6, 5,
     4, 5, 6, 5, 4, 5, 5, 4, 3, 4, 6, 5, 4, 5, 7, 6, 5, 6, 6, 5, 4, 5, 5, 4, 3, 4, 6, 5, 4,
     5, 7, 6, 5, 6, 5, 4, 3, 4, 4, 3, 2, 3, 5, 4, 3, 4, 6, 5, 4, 5, 6, 5, 4, 5, 5, 4, 3, 4,
     6, 5, 4, 5, 7, 6, 5, 6, 7, 6, 5, 6, 6, 5, 4, 5, 7, 6, 5, 6, 8, 7, 6, 7},
    {9, 5, 4,  3, 8,  4, 3,  2, 9,  5, 4,  3, 10, 6, 5,  4, 8,  4, 3,  2, 7,  3, 2,  1, 8,  4,
     3, 2, 9,  5, 4,  3, 9,  5, 4,  3, 8,  4, 3,  2, 9,  5, 4,  3, 10, 6, 5,  4, 10, 6, 5,  4,
     9, 5, 4,  3, 10, 6, 5,  4, 11, 7, 6,  5, 8,  4, 3,  2, 7,  3, 2,  1, 8,  4, 3,  2, 9,  5,
     4, 3, 7,  3, 2,  1, 6,  2, 1,  0, 7,  3, 2,  1, 8,  4, 3,  2, 8,  4, 3,  2, 7,  3, 2,  1,
     8, 4, 3,  2, 9,  5, 4,  3, 9,  5, 4,  3, 8,  4, 3,  2, 9,  5, 4,  3, 10, 6, 5,  4, 9,  5,
     4, 3, 8,  4, 3,  2, 9,  5, 4,  3, 10, 6, 5,  4, 8,  4, 3,  2, 7,  3, 2,  1, 8,  4, 3,  2,
     9, 5, 4,  3, 9,  5, 4,  3, 8,  4, 3,  2, 9,  5, 4,  3, 10, 6, 5,  4, 10, 6, 5,  4, 9,  5,
     4, 3, 10, 6, 5,  4, 11, 7, 6,  5, 10, 6, 5,  4, 9,  5, 4,  3, 10, 6, 5,  4, 11, 7, 6,  5,
     9, 5, 4,  3, 8,  4, 3,  2, 9,  5, 4,  3, 10, 6, 5,  4, 10, 6, 5,  4, 9,  5, 4,  3, 10, 6,
     5, 4, 11, 7, 6,  5, 11, 7, 6,  5, 10, 6, 5,  4, 11, 7, 6,  5, 12, 8, 7,  6},
    {4, 5,  6, 10, 3, 4,  5, 9,  2, 3,  4, 8,  3, 4,  5, 9, 3, 4,  5, 9,  2, 3, 4, 8,  1, 2,
     3, 7,  2, 3,  4, 8,  4, 5,  6, 10, 3, 4,  5, 9,  2, 3, 4, 8,  3, 4,  5, 9, 5, 6,  7, 11,
     4, 5,  6, 10, 3, 4,  5, 9,  4, 5,  6, 10, 3, 4,  5, 9, 2, 3,  4, 8,  1, 2, 3, 7,  2, 3,
     4, 8,  2, 3,  4, 8,  1, 2,  3, 7,  0, 1,  2, 6,  1, 2, 3, 7,  3, 4,  5, 9, 2, 3,  4, 8,
     1, 2,  3, 7,  2, 3,  4, 8,  4, 5,  6, 10, 3, 4,  5, 9, 2, 3,  4, 8,  3, 4, 5, 9,  4, 5,
     6, 10, 3, 4,  5, 9,  2, 3,  4, 8,  3, 4,  5, 9,  3, 4, 5, 9,  2, 3,  4, 8, 1, 2,  3, 7,
     2, 3,  4, 8,  4, 5,  6, 10, 3, 4,  5, 9,  2, 3,  4, 8, 3, 4,  5, 9,  5, 6, 7, 11, 4, 5,
     6, 10, 3, 4,  5, 9,  4, 5,  6, 10, 5, 6,  7, 11, 4, 5, 6, 10, 3, 4,  5, 9, 4, 5,  6, 10,
     4, 5,  6, 10, 3, 4,  5, 9,  2, 3,  4, 8,  3, 4,  5, 9, 5, 6,  7, 11, 4, 5, 6, 10, 3, 4,
     5, 9,  4, 5,  6, 10, 6, 7,  8, 12, 5, 6,  7, 11, 4, 5, 6, 10, 5, 6,  7, 11},
    {5, 4, 5, 6, 4, 3, 4, 5, 3, 2, 3, 4, 4, 3, 4, 5, 4, 3, 4, 5, 3, 2, 3, 4, 2, 1, 2, 3, 3,
     2, 3, 4, 5, 4, 5, 6, 4, 3, 4, 5, 3, 2, 3, 4, 4, 3, 4, 5, 6, 5, 6, 7, 5, 4, 5, 6, 4, 3,
     4, 5, 5, 4, 5, 6, 4, 3, 4, 5, 3, 2, 3, 4, 2, 1, 2, 3, 3, 2, 3, 4, 3, 2, 3, 4, 2, 1, 2,
     3, 1, 0, 1, 2, 2, 1, 2, 3, 4, 3, 4, 5, 3, 2, 3, 4, 2, 1, 2, 3, 3, 2, 3, 4, 5, 4, 5, 6,
     4, 3, 4, 5, 3, 2, 3, 4, 4, 3, 4, 5, 5, 4, 5, 6, 4, 3, 4, 5, 3, 2, 3, 4, 4, 3, 4, 5, 4,
     3, 4, 5, 3, 2, 3, 4, 2, 1, 2, 3, 3, 2, 3, 4, 5, 4, 5, 6, 4, 3, 4, 5, 3, 2, 3, 4, 4, 3,
     4, 5, 6, 5, 6, 7, 5, 4, 5, 6, 4, 3, 4, 5, 5, 4, 5, 6, 6, 5, 6, 7, 5, 4, 5, 6, 4, 3, 4,
     5, 5, 4, 5, 6, 5, 4, 5, 6, 4, 3, 4, 5, 3, 2, 3, 4, 4, 3, 4, 5, 6, 5, 6, 7, 5, 4, 5, 6,
     4, 3, 4, 5, 5, 4, 5, 6, 7, 6, 7, 8, 6, 5, 6, 7, 5, 4, 5, 6, 6, 5, 6, 7},
    {6, 5, 4, 5, 5, 4, 3, 4, 4, 3, 2, 3, 5, 4, 3, 4, 5, 4, 3, 4, 4, 3, 2, 3, 3, 2, 1, 2, 4,
     3, 2, 3, 6, 5, 4, 5, 5, 4, 3, 4, 4, 3, 2, 3, 5, 4, 3, 4, 7, 6, 5, 6, 6, 5, 4, 5, 5, 4,
     3, 4, 6, 5, 4, 5, 5, 4, 3, 4, 4, 3, 2, 3, 3, 2, 1, 2, 4, 3, 2, 3, 4, 3, 2, 3, 3, 2, 1,
     2, 2, 1, 0, 1, 3, 2, 1, 2, 5, 4, 3, 4, 4, 3, 2, 3, 3, 2, 1, 2, 4, 3, 2, 3, 6, 5, 4, 5,
     5, 4, 3, 4, 4, 3, 2, 3, 5, 4, 3, 4, 6, 5, 4, 5, 5, 4, 3, 4, 4, 3, 2, 3, 5, 4, 3, 4, 5,
     4, 3, 4, 4, 3, 2, 3, 3, 2, 1, 2, 4, 3, 2, 3, 6, 5, 4, 5, 5, 4, 3, 4, 4, 3, 2, 3, 5, 4,
     3, 4, 7, 6, 5, 6, 6, 5, 4, 5, 5, 4, 3, 4, 6, 5, 4, 5, 7, 6, 5, 6, 6, 5, 4, 5, 5, 4, 3,
     4, 6, 5, 4, 5, 6, 5, 4, 5, 5, 4, 3, 4, 4, 3, 2, 3, 5, 4, 3, 4, 7, 6, 5, 6, 6, 5, 4, 5,
     5, 4, 3, 4, 6, 5, 4, 5, 8, 7, 6, 7, 7, 6, 5, 6, 6, 5, 4, 5, 7, 6, 5, 6},
    {10, 6, 5,  4, 9,  5, 4,  3, 8,  4, 3,  2, 9, 5, 4,  3, 9,  5, 4,  3, 8,  4, 3,  2, 7,  3,
     2,  1, 8,  4, 3,  2, 10, 6, 5,  4, 9,  5, 4, 3, 8,  4, 3,  2, 9,  5, 4,  3, 11, 7, 6,  5,
     10, 6, 5,  4, 9,  5, 4,  3, 10, 6, 5,  4, 9, 5, 4,  3, 8,  4, 3,  2, 7,  3, 2,  1, 8,  4,
     3,  2, 8,  4, 3,  2, 7,  3, 2,  1, 6,  2, 1, 0, 7,  3, 2,  1, 9,  5, 4,  3, 8,  4, 3,  2,
     7,  3, 2,  1, 8,  4, 3,  2, 10, 6, 5,  4, 9, 5, 4,  3, 8,  4, 3,  2, 9,  5, 4,  3, 10, 6,
     5,  4, 9,  5, 4,  3, 8,  4, 3,  2, 9,  5, 4, 3, 9,  5, 4,  3, 8,  4, 3,  2, 7,  3, 2,  1,
     8,  4, 3,  2, 10, 6, 5,  4, 9,  5, 4,  3, 8, 4, 3,  2, 9,  5, 4,  3, 11, 7, 6,  5, 10, 6,
     5,  4, 9,  5, 4,  3, 10, 6, 5,  4, 11, 7, 6, 5, 10, 6, 5,  4, 9,  5, 4,  3, 10, 6, 5,  4,
     10, 6, 5,  4, 9,  5, 4,  3, 8,  4, 3,  2, 9, 5, 4,  3, 11, 7, 6,  5, 10, 6, 5,  4, 9,  5,
     4,  3, 10, 6, 5,  4, 12, 8, 7,  6, 11, 7, 6, 5, 10, 6, 5,  4, 11, 7, 6,  5},
    {8,  9,  10, 14, 4, 5, 6, 10, 3, 4,  5,  9,  2, 3, 4, 8,  7, 8, 9,  13, 3, 4, 5, 9,
     2,  3,  4,  8,  1, 2, 3, 7,  8, 9,  10, 14, 4, 5, 6, 10, 3, 4, 5,  9,  2, 3, 4, 8,
     9,  10, 11, 15, 5, 6, 7, 11, 4, 5,  6,  10, 3, 4, 5, 9,  7, 8, 9,  13, 3, 4, 5, 9,
     2,  3,  4,  8,  1, 2, 3, 7,  6, 7,  8,  12, 2, 3, 4, 8,  1, 2, 3,  7,  0, 1, 2, 6,
     7,  8,  9,  13, 3, 4, 5, 9,  2, 3,  4,  8,  1, 2, 3, 7,  8, 9, 10, 14, 4, 5, 6, 10,
     3,  4,  5,  9,  2, 3, 4, 8,  8, 9,  10, 14, 4, 5, 6, 10, 3, 4, 5,  9,  2, 3, 4, 8,
     7,  8,  9,  13, 3, 4, 5, 9,  2, 3,  4,  8,  1, 2, 3, 7,  8, 9, 10, 14, 4, 5, 6, 10,
     3,  4,  5,  9,  2, 3, 4, 8,  9, 10, 11, 15, 5, 6, 7, 11, 4, 5, 6,  10, 3, 4, 5, 9,
     9,  10, 11, 15, 5, 6, 7, 11, 4, 5,  6,  10, 3, 4, 5, 9,  8, 9, 10, 14, 4, 5, 6, 10,
     3,  4,  5,  9,  2, 3, 4, 8,  9, 10, 11, 15, 5, 6, 7, 11, 4, 5, 6,  10, 3, 4, 5, 9,
     10, 11, 12, 16, 6, 7, 8, 12, 5, 6,  7,  11, 4, 5, 6, 10},
    {9, 8,  9, 10, 5, 4, 5,  6,  4,  3,  4,  5,  3,  2,  3, 4, 8,  7, 8,  9,  4,  3, 4,  5,  3,  2,
     3, 4,  2, 1,  2, 3, 9,  8,  9,  10, 5,  4,  5,  6,  4, 3, 4,  5, 3,  2,  3,  4, 10, 9,  10, 11,
     6, 5,  6, 7,  5, 4, 5,  6,  4,  3,  4,  5,  8,  7,  8, 9, 4,  3, 4,  5,  3,  2, 3,  4,  2,  1,
     2, 3,  7, 6,  7, 8, 3,  2,  3,  4,  2,  1,  2,  3,  1, 0, 1,  2, 8,  7,  8,  9, 4,  3,  4,  5,
     3, 2,  3, 4,  2, 1, 2,  3,  9,  8,  9,  10, 5,  4,  5, 6, 4,  3, 4,  5,  3,  2, 3,  4,  9,  8,
     9, 10, 5, 4,  5, 6, 4,  3,  4,  5,  3,  2,  3,  4,  8, 7, 8,  9, 4,  3,  4,  5, 3,  2,  3,  4,
     2, 1,  2, 3,  9, 8, 9,  10, 5,  4,  5,  6,  4,  3,  4, 5, 3,  2, 3,  4,  10, 9, 10, 11, 6,  5,
     6, 7,  5, 4,  5, 6, 4,  3,  4,  5,  10, 9,  10, 11, 6, 5, 6,  7, 5,  4,  5,  6, 4,  3,  4,  5,
     9, 8,  9, 10, 5, 4, 5,  6,  4,  3,  4,  5,  3,  2,  3, 4, 10, 9, 10, 11, 6,  5, 6,  7,  5,  4,
     5, 6,  4, 3,  4, 5, 11, 10, 11, 12, 7,  6,  7,  8,  6, 5, 6,  7, 5,  4,  5,  6},
    {10, 9, 8, 9, 6,  5, 4,  5,  5,  4,  3,  4,  4, 3,  2, 3, 9,  8,  7, 8,  5,  4,  3,  4,  4,  3,
     2,  3, 3, 2, 1,  2, 10, 9,  8,  9,  6,  5,  4, 5,  5, 4, 3,  4,  4, 3,  2,  3,  11, 10, 9,  10,
     7,  6, 5, 6, 6,  5, 4,  5,  5,  4,  3,  4,  9, 8,  7, 8, 5,  4,  3, 4,  4,  3,  2,  3,  3,  2,
     1,  2, 8, 7, 6,  7, 4,  3,  2,  3,  3,  2,  1, 2,  2, 1, 0,  1,  9, 8,  7,  8,  5,  4,  3,  4,
     4,  3, 2, 3, 3,  2, 1,  2,  10, 9,  8,  9,  6, 5,  4, 5, 5,  4,  3, 4,  4,  3,  2,  3,  10, 9,
     8,  9, 6, 5, 4,  5, 5,  4,  3,  4,  4,  3,  2, 3,  9, 8, 7,  8,  5, 4,  3,  4,  4,  3,  2,  3,
     3,  2, 1, 2, 10, 9, 8,  9,  6,  5,  4,  5,  5, 4,  3, 4, 4,  3,  2, 3,  11, 10, 9,  10, 7,  6,
     5,  6, 6, 5, 4,  5, 5,  4,  3,  4,  11, 10, 9, 10, 7, 6, 5,  6,  6, 5,  4,  5,  5,  4,  3,  4,
     10, 9, 8, 9, 6,  5, 4,  5,  5,  4,  3,  4,  4, 3,  2, 3, 11, 10, 9, 10, 7,  6,  5,  6,  6,  5,
     4,  5, 5, 4, 3,  4, 12, 11, 10, 11, 8,  7,  6, 7,  7, 6, 5,  6,  6, 5,  4,  5},
    {14, 10, 9,  8,  10, 6, 5, 4, 9,  5,  4,  3, 8,  4, 3, 2, 13, 9,  8, 7, 9,  5, 4, 3,
     8,  4,  3,  2,  7,  3, 2, 1, 14, 10, 9,  8, 10, 6, 5, 4, 9,  5,  4, 3, 8,  4, 3, 2,
     15, 11, 10, 9,  11, 7, 6, 5, 10, 6,  5,  4, 9,  5, 4, 3, 13, 9,  8, 7, 9,  5, 4, 3,
     8,  4,  3,  2,  7,  3, 2, 1, 12, 8,  7,  6, 8,  4, 3, 2, 7,  3,  2, 1, 6,  2, 1, 0,
     13, 9,  8,  7,  9,  5, 4, 3, 8,  4,  3,  2, 7,  3, 2, 1, 14, 10, 9, 8, 10, 6, 5, 4,
     9,  5,  4,  3,  8,  4, 3, 2, 14, 10, 9,  8, 10, 6, 5, 4, 9,  5,  4, 3, 8,  4, 3, 2,
     13, 9,  8,  7,  9,  5, 4, 3, 8,  4,  3,  2, 7,  3, 2, 1, 14, 10, 9, 8, 10, 6, 5, 4,
     9,  5,  4,  3,  8,  4, 3, 2, 15, 11, 10, 9, 11, 7, 6, 5, 10, 6,  5, 4, 9,  5, 4, 3,
     15, 11, 10, 9,  11, 7, 6, 5, 10, 6,  5,  4, 9,  5, 4, 3, 14, 10, 9, 8, 10, 6, 5, 4,
     9,  5,  4,  3,  8,  4, 3, 2, 15, 11, 10, 9, 11, 7, 6, 5, 10, 6,  5, 4, 9,  5, 4, 3,
     16, 12, 11, 10, 12, 8, 7, 6, 11, 7,  6,  5, 10, 6, 5, 4},
    {3, 4, 5, 9,  4, 5,  6,  10, 5, 6, 7, 11, 9,  10, 11, 15, 2, 3, 4, 8,  3, 4,  5,  9,
     4, 5, 6, 10, 8, 9,  10, 14, 1, 2, 3, 7,  2,  3,  4,  8,  3, 4, 5, 9,  7, 8,  9,  13,
     2, 3, 4, 8,  3, 4,  5,  9,  4, 5, 6, 10, 8,  9,  10, 14, 2, 3, 4, 8,  3, 4,  5,  9,
     4, 5, 6, 10, 8, 9,  10, 14, 1, 2, 3, 7,  2,  3,  4,  8,  3, 4, 5, 9,  7, 8,  9,  13,
     0, 1, 2, 6,  1, 2,  3,  7,  2, 3, 4, 8,  6,  7,  8,  12, 1, 2, 3, 7,  2, 3,  4,  8,
     3, 4, 5, 9,  7, 8,  9,  13, 3, 4, 5, 9,  4,  5,  6,  10, 5, 6, 7, 11, 9, 10, 11, 15,
     2, 3, 4, 8,  3, 4,  5,  9,  4, 5, 6, 10, 8,  9,  10, 14, 1, 2, 3, 7,  2, 3,  4,  8,
     3, 4, 5, 9,  7, 8,  9,  13, 2, 3, 4, 8,  3,  4,  5,  9,  4, 5, 6, 10, 8, 9,  10, 14,
     4, 5, 6, 10, 5, 6,  7,  11, 6, 7, 8, 12, 10, 11, 12, 16, 3, 4, 5, 9,  4, 5,  6,  10,
     5, 6, 7, 11, 9, 10, 11, 15, 2, 3, 4, 8,  3,  4,  5,  9,  4, 5, 6, 10, 8, 9,  10, 14,
     3, 4, 5, 9,  4, 5,  6,  10, 5, 6, 7, 11, 9,  10, 11, 15},
    {4, 3,  4, 5,  5, 4,  5, 6, 6, 5,  6,  7,  10, 9,  10, 11, 3, 2, 3,  4, 4,  3, 4,  5,  5,  4,
     5, 6,  9, 8,  9, 10, 2, 1, 2, 3,  3,  2,  3,  4,  4,  3,  4, 5, 8,  7, 8,  9, 3,  2,  3,  4,
     4, 3,  4, 5,  5, 4,  5, 6, 9, 8,  9,  10, 3,  2,  3,  4,  4, 3, 4,  5, 5,  4, 5,  6,  9,  8,
     9, 10, 2, 1,  2, 3,  3, 2, 3, 4,  4,  3,  4,  5,  8,  7,  8, 9, 1,  0, 1,  2, 2,  1,  2,  3,
     3, 2,  3, 4,  7, 6,  7, 8, 2, 1,  2,  3,  3,  2,  3,  4,  4, 3, 4,  5, 8,  7, 8,  9,  4,  3,
     4, 5,  5, 4,  5, 6,  6, 5, 6, 7,  10, 9,  10, 11, 3,  2,  3, 4, 4,  3, 4,  5, 5,  4,  5,  6,
     9, 8,  9, 10, 2, 1,  2, 3, 3, 2,  3,  4,  4,  3,  4,  5,  8, 7, 8,  9, 3,  2, 3,  4,  4,  3,
     4, 5,  5, 4,  5, 6,  9, 8, 9, 10, 5,  4,  5,  6,  6,  5,  6, 7, 7,  6, 7,  8, 11, 10, 11, 12,
     4, 3,  4, 5,  5, 4,  5, 6, 6, 5,  6,  7,  10, 9,  10, 11, 3, 2, 3,  4, 4,  3, 4,  5,  5,  4,
     5, 6,  9, 8,  9, 10, 4, 3, 4, 5,  5,  4,  5,  6,  6,  5,  6, 7, 10, 9, 10, 11},
    {5,  4, 3,  4, 6, 5, 4,  5, 7,  6, 5,  6,  11, 10, 9, 10, 4, 3, 2,  3,  5, 4, 3,  4,  6,  5,
     4,  5, 10, 9, 8, 9, 3,  2, 1,  2, 4,  3,  2,  3,  5, 4,  3, 4, 9,  8,  7, 8, 4,  3,  2,  3,
     5,  4, 3,  4, 6, 5, 4,  5, 10, 9, 8,  9,  4,  3,  2, 3,  5, 4, 3,  4,  6, 5, 4,  5,  10, 9,
     8,  9, 3,  2, 1, 2, 4,  3, 2,  3, 5,  4,  3,  4,  9, 8,  7, 8, 2,  1,  0, 1, 3,  2,  1,  2,
     4,  3, 2,  3, 8, 7, 6,  7, 3,  2, 1,  2,  4,  3,  2, 3,  5, 4, 3,  4,  9, 8, 7,  8,  5,  4,
     3,  4, 6,  5, 4, 5, 7,  6, 5,  6, 11, 10, 9,  10, 4, 3,  2, 3, 5,  4,  3, 4, 6,  5,  4,  5,
     10, 9, 8,  9, 3, 2, 1,  2, 4,  3, 2,  3,  5,  4,  3, 4,  9, 8, 7,  8,  4, 3, 2,  3,  5,  4,
     3,  4, 6,  5, 4, 5, 10, 9, 8,  9, 6,  5,  4,  5,  7, 6,  5, 6, 8,  7,  6, 7, 12, 11, 10, 11,
     5,  4, 3,  4, 6, 5, 4,  5, 7,  6, 5,  6,  11, 10, 9, 10, 4, 3, 2,  3,  5, 4, 3,  4,  6,  5,
     4,  5, 10, 9, 8, 9, 5,  4, 3,  4, 6,  5,  4,  5,  7, 6,  5, 6, 11, 10, 9, 10},
    {9,  5, 4, 3, 10, 6,  5,  4, 11, 7, 6, 5, 15, 11, 10, 9,  8,  4, 3, 2, 9,  5,  4,  3,
     10, 6, 5, 4, 14, 10, 9,  8, 7,  3, 2, 1, 8,  4,  3,  2,  9,  5, 4, 3, 13, 9,  8,  7,
     8,  4, 3, 2, 9,  5,  4,  3, 10, 6, 5, 4, 14, 10, 9,  8,  8,  4, 3, 2, 9,  5,  4,  3,
     10, 6, 5, 4, 14, 10, 9,  8, 7,  3, 2, 1, 8,  4,  3,  2,  9,  5, 4, 3, 13, 9,  8,  7,
     6,  2, 1, 0, 7,  3,  2,  1, 8,  4, 3, 2, 12, 8,  7,  6,  7,  3, 2, 1, 8,  4,  3,  2,
     9,  5, 4, 3, 13, 9,  8,  7, 9,  5, 4, 3, 10, 6,  5,  4,  11, 7, 6, 5, 15, 11, 10, 9,
     8,  4, 3, 2, 9,  5,  4,  3, 10, 6, 5, 4, 14, 10, 9,  8,  7,  3, 2, 1, 8,  4,  3,  2,
     9,  5, 4, 3, 13, 9,  8,  7, 8,  4, 3, 2, 9,  5,  4,  3,  10, 6, 5, 4, 14, 10, 9,  8,
     10, 6, 5, 4, 11, 7,  6,  5, 12, 8, 7, 6, 16, 12, 11, 10, 9,  5, 4, 3, 10, 6,  5,  4,
     11, 7, 6, 5, 15, 11, 10, 9, 8,  4, 3, 2, 9,  5,  4,  3,  10, 6, 5, 4, 14, 10, 9,  8,
     9,  5, 4, 3, 10, 6,  5,  4, 11, 7, 6, 5, 15, 11, 10, 9},
    {4, 5,  6, 10, 3, 4,  5, 9, 4, 5,  6, 10, 5, 6,  7, 11, 3, 4,  5, 9, 2, 3,  4, 8, 3, 4,
     5, 9,  4, 5,  6, 10, 2, 3, 4, 8,  1, 2,  3, 7,  2, 3,  4, 8,  3, 4, 5, 9,  3, 4, 5, 9,
     2, 3,  4, 8,  3, 4,  5, 9, 4, 5,  6, 10, 3, 4,  5, 9,  2, 3,  4, 8, 3, 4,  5, 9, 4, 5,
     6, 10, 2, 3,  4, 8,  1, 2, 3, 7,  2, 3,  4, 8,  3, 4,  5, 9,  1, 2, 3, 7,  0, 1, 2, 6,
     1, 2,  3, 7,  2, 3,  4, 8, 2, 3,  4, 8,  1, 2,  3, 7,  2, 3,  4, 8, 3, 4,  5, 9, 4, 5,
     6, 10, 3, 4,  5, 9,  4, 5, 6, 10, 5, 6,  7, 11, 3, 4,  5, 9,  2, 3, 4, 8,  3, 4, 5, 9,
     4, 5,  6, 10, 2, 3,  4, 8, 1, 2,  3, 7,  2, 3,  4, 8,  3, 4,  5, 9, 3, 4,  5, 9, 2, 3,
     4, 8,  3, 4,  5, 9,  4, 5, 6, 10, 5, 6,  7, 11, 4, 5,  6, 10, 5, 6, 7, 11, 6, 7, 8, 12,
     4, 5,  6, 10, 3, 4,  5, 9, 4, 5,  6, 10, 5, 6,  7, 11, 3, 4,  5, 9, 2, 3,  4, 8, 3, 4,
     5, 9,  4, 5,  6, 10, 4, 5, 6, 10, 3, 4,  5, 9,  4, 5,  6, 10, 5, 6, 7, 11},
    {5, 4, 5, 6, 4, 3, 4, 5, 5, 4, 5, 6, 6, 5, 6, 7, 4, 3, 4, 5, 3, 2, 3, 4, 4, 3, 4, 5, 5,
     4, 5, 6, 3, 2, 3, 4, 2, 1, 2, 3, 3, 2, 3, 4, 4, 3, 4, 5, 4, 3, 4, 5, 3, 2, 3, 4, 4, 3,
     4, 5, 5, 4, 5, 6, 4, 3, 4, 5, 3, 2, 3, 4, 4, 3, 4, 5, 5, 4, 5, 6, 3, 2, 3, 4, 2, 1, 2,
     3, 3, 2, 3, 4, 4, 3, 4, 5, 2, 1, 2, 3, 1, 0, 1, 2, 2, 1, 2, 3, 3, 2, 3, 4, 3, 2, 3, 4,
     2, 1, 2, 3, 3, 2, 3, 4, 4, 3, 4, 5, 5, 4, 5, 6, 4, 3, 4, 5, 5, 4, 5, 6, 6, 5, 6, 7, 4,
     3, 4, 5, 3, 2, 3, 4, 4, 3, 4, 5, 5, 4, 5, 6, 3, 2, 3, 4, 2, 1, 2, 3, 3, 2, 3, 4, 4, 3,
     4, 5, 4, 3, 4, 5, 3, 2, 3, 4, 4, 3, 4, 5, 5, 4, 5, 6, 6, 5, 6, 7, 5, 4, 5, 6, 6, 5, 6,
     7, 7, 6, 7, 8, 5, 4, 5, 6, 4, 3, 4, 5, 5, 4, 5, 6, 6, 5, 6, 7, 4, 3, 4, 5, 3, 2, 3, 4,
     4, 3, 4, 5, 5, 4, 5, 6, 5, 4, 5, 6, 4, 3, 4, 5, 5, 4, 5, 6, 6, 5, 6, 7},
    {6, 5, 4, 5, 5, 4, 3, 4, 6, 5, 4, 5, 7, 6, 5, 6, 5, 4, 3, 4, 4, 3, 2, 3, 5, 4, 3, 4, 6,
     5, 4, 5, 4, 3, 2, 3, 3, 2, 1, 2, 4, 3, 2, 3, 5, 4, 3, 4, 5, 4, 3, 4, 4, 3, 2, 3, 5, 4,
     3, 4, 6, 5, 4, 5, 5, 4, 3, 4, 4, 3, 2, 3, 5, 4, 3, 4, 6, 5, 4, 5, 4, 3, 2, 3, 3, 2, 1,
     2, 4, 3, 2, 3, 5, 4, 3, 4, 3, 2, 1, 2, 2, 1, 0, 1, 3, 2, 1, 2, 4, 3, 2, 3, 4, 3, 2, 3,
     3, 2, 1, 2, 4, 3, 2, 3, 5, 4, 3, 4, 6, 5, 4, 5, 5, 4, 3, 4, 6, 5, 4, 5, 7, 6, 5, 6, 5,
     4, 3, 4, 4, 3, 2, 3, 5, 4, 3, 4, 6, 5, 4, 5, 4, 3, 2, 3, 3, 2, 1, 2, 4, 3, 2, 3, 5, 4,
     3, 4, 5, 4, 3, 4, 4, 3, 2, 3, 5, 4, 3, 4, 6, 5, 4, 5, 7, 6, 5, 6, 6, 5, 4, 5, 7, 6, 5,
     6, 8, 7, 6, 7, 6, 5, 4, 5, 5, 4, 3, 4, 6, 5, 4, 5, 7, 6, 5, 6, 5, 4, 3, 4, 4, 3, 2, 3,
     5, 4, 3, 4, 6, 5, 4, 5, 6, 5, 4, 5, 5, 4, 3, 4, 6, 5, 4, 5, 7, 6, 5, 6},
    {10, 6, 5,  4, 9, 5, 4,  3, 10, 6, 5,  4, 11, 7, 6,  5, 9, 5, 4,  3, 8, 4, 3,  2, 9,  5,
     4,  3, 10, 6, 5, 4, 8,  4, 3,  2, 7,  3, 2,  1, 8,  4, 3, 2, 9,  5, 4, 3, 9,  5, 4,  3,
     8,  4, 3,  2, 9, 5, 4,  3, 10, 6, 5,  4, 9,  5, 4,  3, 8, 4, 3,  2, 9, 5, 4,  3, 10, 6,
     5,  4, 8,  4, 3, 2, 7,  3, 2,  1, 8,  4, 3,  2, 9,  5, 4, 3, 7,  3, 2, 1, 6,  2, 1,  0,
     7,  3, 2,  1, 8, 4, 3,  2, 8,  4, 3,  2, 7,  3, 2,  1, 8, 4, 3,  2, 9, 5, 4,  3, 10, 6,
     5,  4, 9,  5, 4, 3, 10, 6, 5,  4, 11, 7, 6,  5, 9,  5, 4, 3, 8,  4, 3, 2, 9,  5, 4,  3,
     10, 6, 5,  4, 8, 4, 3,  2, 7,  3, 2,  1, 8,  4, 3,  2, 9, 5, 4,  3, 9, 5, 4,  3, 8,  4,
     3,  2, 9,  5, 4, 3, 10, 6, 5,  4, 11, 7, 6,  5, 10, 6, 5, 4, 11, 7, 6, 5, 12, 8, 7,  6,
     10, 6, 5,  4, 9, 5, 4,  3, 10, 6, 5,  4, 11, 7, 6,  5, 9, 5, 4,  3, 8, 4, 3,  2, 9,  5,
     4,  3, 10, 6, 5, 4, 10, 6, 5,  4, 9,  5, 4,  3, 10, 6, 5, 4, 11, 7, 6, 5},
    {5, 6,  7, 11, 4, 5,  6, 10, 3, 4,  5, 9, 4, 5,  6, 10, 4, 5,  6, 10, 3, 4,  5, 9,  2, 3,
     4, 8,  3, 4,  5, 9,  3, 4,  5, 9,  2, 3, 4, 8,  1, 2,  3, 7,  2, 3,  4, 8,  4, 5,  6, 10,
     3, 4,  5, 9,  2, 3,  4, 8,  3, 4,  5, 9, 4, 5,  6, 10, 3, 4,  5, 9,  2, 3,  4, 8,  3, 4,
     5, 9,  3, 4,  5, 9,  2, 3,  4, 8,  1, 2, 3, 7,  2, 3,  4, 8,  2, 3,  4, 8,  1, 2,  3, 7,
     0, 1,  2, 6,  1, 2,  3, 7,  3, 4,  5, 9, 2, 3,  4, 8,  1, 2,  3, 7,  2, 3,  4, 8,  5, 6,
     7, 11, 4, 5,  6, 10, 3, 4,  5, 9,  4, 5, 6, 10, 4, 5,  6, 10, 3, 4,  5, 9,  2, 3,  4, 8,
     3, 4,  5, 9,  3, 4,  5, 9,  2, 3,  4, 8, 1, 2,  3, 7,  2, 3,  4, 8,  4, 5,  6, 10, 3, 4,
     5, 9,  2, 3,  4, 8,  3, 4,  5, 9,  6, 7, 8, 12, 5, 6,  7, 11, 4, 5,  6, 10, 5, 6,  7, 11,
     5, 6,  7, 11, 4, 5,  6, 10, 3, 4,  5, 9, 4, 5,  6, 10, 4, 5,  6, 10, 3, 4,  5, 9,  2, 3,
     4, 8,  3, 4,  5, 9,  5, 6,  7, 11, 4, 5, 6, 10, 3, 4,  5, 9,  4, 5,  6, 10},
    {6, 5, 6, 7, 5, 4, 5, 6, 4, 3, 4, 5, 5, 4, 5, 6, 5, 4, 5, 6, 4, 3, 4, 5, 3, 2, 3, 4, 4,
     3, 4, 5, 4, 3, 4, 5, 3, 2, 3, 4, 2, 1, 2, 3, 3, 2, 3, 4, 5, 4, 5, 6, 4, 3, 4, 5, 3, 2,
     3, 4, 4, 3, 4, 5, 5, 4, 5, 6, 4, 3, 4, 5, 3, 2, 3, 4, 4, 3, 4, 5, 4, 3, 4, 5, 3, 2, 3,
     4, 2, 1, 2, 3, 3, 2, 3, 4, 3, 2, 3, 4, 2, 1, 2, 3, 1, 0, 1, 2, 2, 1, 2, 3, 4, 3, 4, 5,
     3, 2, 3, 4, 2, 1, 2, 3, 3, 2, 3, 4, 6, 5, 6, 7, 5, 4, 5, 6, 4, 3, 4, 5, 5, 4, 5, 6, 5,
     4, 5, 6, 4, 3, 4, 5, 3, 2, 3, 4, 4, 3, 4, 5, 4, 3, 4, 5, 3, 2, 3, 4, 2, 1, 2, 3, 3, 2,
     3, 4, 5, 4, 5, 6, 4, 3, 4, 5, 3, 2, 3, 4, 4, 3, 4, 5, 7, 6, 7, 8, 6, 5, 6, 7, 5, 4, 5,
     6, 6, 5, 6, 7, 6, 5, 6, 7, 5, 4, 5, 6, 4, 3, 4, 5, 5, 4, 5, 6, 5, 4, 5, 6, 4, 3, 4, 5,
     3, 2, 3, 4, 4, 3, 4, 5, 6, 5, 6, 7, 5, 4, 5, 6, 4, 3, 4, 5, 5, 4, 5, 6},
    {7, 6, 5, 6, 6, 5, 4, 5, 5, 4, 3, 4, 6, 5, 4, 5, 6, 5, 4, 5, 5, 4, 3, 4, 4, 3, 2, 3, 5,
     4, 3, 4, 5, 4, 3, 4, 4, 3, 2, 3, 3, 2, 1, 2, 4, 3, 2, 3, 6, 5, 4, 5, 5, 4, 3, 4, 4, 3,
     2, 3, 5, 4, 3, 4, 6, 5, 4, 5, 5, 4, 3, 4, 4, 3, 2, 3, 5, 4, 3, 4, 5, 4, 3, 4, 4, 3, 2,
     3, 3, 2, 1, 2, 4, 3, 2, 3, 4, 3, 2, 3, 3, 2, 1, 2, 2, 1, 0, 1, 3, 2, 1, 2, 5, 4, 3, 4,
     4, 3, 2, 3, 3, 2, 1, 2, 4, 3, 2, 3, 7, 6, 5, 6, 6, 5, 4, 5, 5, 4, 3, 4, 6, 5, 4, 5, 6,
     5, 4, 5, 5, 4, 3, 4, 4, 3, 2, 3, 5, 4, 3, 4, 5, 4, 3, 4, 4, 3, 2, 3, 3, 2, 1, 2, 4, 3,
     2, 3, 6, 5, 4, 5, 5, 4, 3, 4, 4, 3, 2, 3, 5, 4, 3, 4, 8, 7, 6, 7, 7, 6, 5, 6, 6, 5, 4,
     5, 7, 6, 5, 6, 7, 6, 5, 6, 6, 5, 4, 5, 5, 4, 3, 4, 6, 5, 4, 5, 6, 5, 4, 5, 5, 4, 3, 4,
     4, 3, 2, 3, 5, 4, 3, 4, 7, 6, 5, 6, 6, 5, 4, 5, 5, 4, 3, 4, 6, 5, 4, 5},
    {11, 7, 6,  5, 10, 6, 5,  4, 9, 5, 4,  3, 10, 6, 5,  4, 10, 6, 5,  4, 9,  5, 4,  3, 8,  4,
     3,  2, 9,  5, 4,  3, 9,  5, 4, 3, 8,  4, 3,  2, 7,  3, 2,  1, 8,  4, 3,  2, 10, 6, 5,  4,
     9,  5, 4,  3, 8,  4, 3,  2, 9, 5, 4,  3, 10, 6, 5,  4, 9,  5, 4,  3, 8,  4, 3,  2, 9,  5,
     4,  3, 9,  5, 4,  3, 8,  4, 3, 2, 7,  3, 2,  1, 8,  4, 3,  2, 8,  4, 3,  2, 7,  3, 2,  1,
     6,  2, 1,  0, 7,  3, 2,  1, 9, 5, 4,  3, 8,  4, 3,  2, 7,  3, 2,  1, 8,  4, 3,  2, 11, 7,
     6,  5, 10, 6, 5,  4, 9,  5, 4, 3, 10, 6, 5,  4, 10, 6, 5,  4, 9,  5, 4,  3, 8,  4, 3,  2,
     9,  5, 4,  3, 9,  5, 4,  3, 8, 4, 3,  2, 7,  3, 2,  1, 8,  4, 3,  2, 10, 6, 5,  4, 9,  5,
     4,  3, 8,  4, 3,  2, 9,  5, 4, 3, 12, 8, 7,  6, 11, 7, 6,  5, 10, 6, 5,  4, 11, 7, 6,  5,
     11, 7, 6,  5, 10, 6, 5,  4, 9, 5, 4,  3, 10, 6, 5,  4, 10, 6, 5,  4, 9,  5, 4,  3, 8,  4,
     3,  2, 9,  5, 4,  3, 11, 7, 6, 5, 10, 6, 5,  4, 9,  5, 4,  3, 10, 6, 5,  4},
    {9,  10, 11, 15, 5, 6, 7, 11, 4, 5,  6,  10, 3, 4, 5, 9,  8, 9,  10, 14, 4, 5, 6, 10,
     3,  4,  5,  9,  2, 3, 4, 8,  7, 8,  9,  13, 3, 4, 5, 9,  2, 3,  4,  8,  1, 2, 3, 7,
     8,  9,  10, 14, 4, 5, 6, 10, 3, 4,  5,  9,  2, 3, 4, 8,  8, 9,  10, 14, 4, 5, 6, 10,
     3,  4,  5,  9,  2, 3, 4, 8,  7, 8,  9,  13, 3, 4, 5, 9,  2, 3,  4,  8,  1, 2, 3, 7,
     6,  7,  8,  12, 2, 3, 4, 8,  1, 2,  3,  7,  0, 1, 2, 6,  7, 8,  9,  13, 3, 4, 5, 9,
     2,  3,  4,  8,  1, 2, 3, 7,  9, 10, 11, 15, 5, 6, 7, 11, 4, 5,  6,  10, 3, 4, 5, 9,
     8,  9,  10, 14, 4, 5, 6, 10, 3, 4,  5,  9,  2, 3, 4, 8,  7, 8,  9,  13, 3, 4, 5, 9,
     2,  3,  4,  8,  1, 2, 3, 7,  8, 9,  10, 14, 4, 5, 6, 10, 3, 4,  5,  9,  2, 3, 4, 8,
     10, 11, 12, 16, 6, 7, 8, 12, 5, 6,  7,  11, 4, 5, 6, 10, 9, 10, 11, 15, 5, 6, 7, 11,
     4,  5,  6,  10, 3, 4, 5, 9,  8, 9,  10, 14, 4, 5, 6, 10, 3, 4,  5,  9,  2, 3, 4, 8,
     9,  10, 11, 15, 5, 6, 7, 11, 4, 5,  6,  10, 3, 4, 5, 9},
    {10, 9,  10, 11, 6, 5, 6,  7, 5,  4,  5,  6,  4,  3,  4, 5,  9, 8,  9, 10, 5, 4, 5, 6,  4,  3,
     4,  5,  3,  2,  3, 4, 8,  7, 8,  9,  4,  3,  4,  5,  3, 2,  3, 4,  2, 1,  2, 3, 9, 8,  9,  10,
     5,  4,  5,  6,  4, 3, 4,  5, 3,  2,  3,  4,  9,  8,  9, 10, 5, 4,  5, 6,  4, 3, 4, 5,  3,  2,
     3,  4,  8,  7,  8, 9, 4,  3, 4,  5,  3,  2,  3,  4,  2, 1,  2, 3,  7, 6,  7, 8, 3, 2,  3,  4,
     2,  1,  2,  3,  1, 0, 1,  2, 8,  7,  8,  9,  4,  3,  4, 5,  3, 2,  3, 4,  2, 1, 2, 3,  10, 9,
     10, 11, 6,  5,  6, 7, 5,  4, 5,  6,  4,  3,  4,  5,  9, 8,  9, 10, 5, 4,  5, 6, 4, 3,  4,  5,
     3,  2,  3,  4,  8, 7, 8,  9, 4,  3,  4,  5,  3,  2,  3, 4,  2, 1,  2, 3,  9, 8, 9, 10, 5,  4,
     5,  6,  4,  3,  4, 5, 3,  2, 3,  4,  11, 10, 11, 12, 7, 6,  7, 8,  6, 5,  6, 7, 5, 4,  5,  6,
     10, 9,  10, 11, 6, 5, 6,  7, 5,  4,  5,  6,  4,  3,  4, 5,  9, 8,  9, 10, 5, 4, 5, 6,  4,  3,
     4,  5,  3,  2,  3, 4, 10, 9, 10, 11, 6,  5,  6,  7,  5, 4,  5, 6,  4, 3,  4, 5},
    {11, 10, 9, 10, 7, 6, 5,  6,  6, 5,  4,  5,  5,  4,  3,  4, 10, 9, 8, 9, 6,  5, 4,  5, 5,  4,
     3,  4,  4, 3,  2, 3, 9,  8,  7, 8,  5,  4,  3,  4,  4,  3, 2,  3, 3, 2, 1,  2, 10, 9, 8,  9,
     6,  5,  4, 5,  5, 4, 3,  4,  4, 3,  2,  3,  10, 9,  8,  9, 6,  5, 4, 5, 5,  4, 3,  4, 4,  3,
     2,  3,  9, 8,  7, 8, 5,  4,  3, 4,  4,  3,  2,  3,  3,  2, 1,  2, 8, 7, 6,  7, 4,  3, 2,  3,
     3,  2,  1, 2,  2, 1, 0,  1,  9, 8,  7,  8,  5,  4,  3,  4, 4,  3, 2, 3, 3,  2, 1,  2, 11, 10,
     9,  10, 7, 6,  5, 6, 6,  5,  4, 5,  5,  4,  3,  4,  10, 9, 8,  9, 6, 5, 4,  5, 5,  4, 3,  4,
     4,  3,  2, 3,  9, 8, 7,  8,  5, 4,  3,  4,  4,  3,  2,  3, 3,  2, 1, 2, 10, 9, 8,  9, 6,  5,
     4,  5,  5, 4,  3, 4, 4,  3,  2, 3,  12, 11, 10, 11, 8,  7, 6,  7, 7, 6, 5,  6, 6,  5, 4,  5,
     11, 10, 9, 10, 7, 6, 5,  6,  6, 5,  4,  5,  5,  4,  3,  4, 10, 9, 8, 9, 6,  5, 4,  5, 5,  4,
     3,  4,  4, 3,  2, 3, 11, 10, 9, 10, 7,  6,  5,  6,  6,  5, 4,  5, 5, 4, 3,  4},
    {15, 11, 10, 9,  11, 7, 6, 5, 10, 6,  5,  4, 9,  5, 4, 3, 14, 10, 9,  8, 10, 6, 5, 4,
     9,  5,  4,  3,  8,  4, 3, 2, 13, 9,  8,  7, 9,  5, 4, 3, 8,  4,  3,  2, 7,  3, 2, 1,
     14, 10, 9,  8,  10, 6, 5, 4, 9,  5,  4,  3, 8,  4, 3, 2, 14, 10, 9,  8, 10, 6, 5, 4,
     9,  5,  4,  3,  8,  4, 3, 2, 13, 9,  8,  7, 9,  5, 4, 3, 8,  4,  3,  2, 7,  3, 2, 1,
     12, 8,  7,  6,  8,  4, 3, 2, 7,  3,  2,  1, 6,  2, 1, 0, 13, 9,  8,  7, 9,  5, 4, 3,
     8,  4,  3,  2,  7,  3, 2, 1, 15, 11, 10, 9, 11, 7, 6, 5, 10, 6,  5,  4, 9,  5, 4, 3,
     14, 10, 9,  8,  10, 6, 5, 4, 9,  5,  4,  3, 8,  4, 3, 2, 13, 9,  8,  7, 9,  5, 4, 3,
     8,  4,  3,  2,  7,  3, 2, 1, 14, 10, 9,  8, 10, 6, 5, 4, 9,  5,  4,  3, 8,  4, 3, 2,
     16, 12, 11, 10, 12, 8, 7, 6, 11, 7,  6,  5, 10, 6, 5, 4, 15, 11, 10, 9, 11, 7, 6, 5,
     10, 6,  5,  4,  9,  5, 4, 3, 14, 10, 9,  8, 10, 6, 5, 4, 9,  5,  4,  3, 8,  4, 3, 2,
     15, 11, 10, 9,  11, 7, 6, 5, 10, 6,  5,  4, 9,  5, 4, 3},
    {7, 8, 9,  13, 8,  9,  10, 14, 9,  10, 11, 15, 13, 14, 15, 19, 3, 4,  5,  9,  4,  5,  6,  10,
     5, 6, 7,  11, 9,  10, 11, 15, 2,  3,  4,  8,  3,  4,  5,  9,  4, 5,  6,  10, 8,  9,  10, 14,
     1, 2, 3,  7,  2,  3,  4,  8,  3,  4,  5,  9,  7,  8,  9,  13, 6, 7,  8,  12, 7,  8,  9,  13,
     8, 9, 10, 14, 12, 13, 14, 18, 2,  3,  4,  8,  3,  4,  5,  9,  4, 5,  6,  10, 8,  9,  10, 14,
     1, 2, 3,  7,  2,  3,  4,  8,  3,  4,  5,  9,  7,  8,  9,  13, 0, 1,  2,  6,  1,  2,  3,  7,
     2, 3, 4,  8,  6,  7,  8,  12, 7,  8,  9,  13, 8,  9,  10, 14, 9, 10, 11, 15, 13, 14, 15, 19,
     3, 4, 5,  9,  4,  5,  6,  10, 5,  6,  7,  11, 9,  10, 11, 15, 2, 3,  4,  8,  3,  4,  5,  9,
     4, 5, 6,  10, 8,  9,  10, 14, 1,  2,  3,  7,  2,  3,  4,  8,  3, 4,  5,  9,  7,  8,  9,  13,
     8, 9, 10, 14, 9,  10, 11, 15, 10, 11, 12, 16, 14, 15, 16, 20, 4, 5,  6,  10, 5,  6,  7,  11,
     6, 7, 8,  12, 10, 11, 12, 16, 3,  4,  5,  9,  4,  5,  6,  10, 5, 6,  7,  11, 9,  10, 11, 15,
     2, 3, 4,  8,  3,  4,  5,  9,  4,  5,  6,  10, 8,  9,  10, 14},
    {8, 7, 8, 9,  9,  8,  9,  10, 10, 9,  10, 11, 14, 13, 14, 15, 4,  3, 4,  5,  5,  4,  5,  6,
     6, 5, 6, 7,  10, 9,  10, 11, 3,  2,  3,  4,  4,  3,  4,  5,  5,  4, 5,  6,  9,  8,  9,  10,
     2, 1, 2, 3,  3,  2,  3,  4,  4,  3,  4,  5,  8,  7,  8,  9,  7,  6, 7,  8,  8,  7,  8,  9,
     9, 8, 9, 10, 13, 12, 13, 14, 3,  2,  3,  4,  4,  3,  4,  5,  5,  4, 5,  6,  9,  8,  9,  10,
     2, 1, 2, 3,  3,  2,  3,  4,  4,  3,  4,  5,  8,  7,  8,  9,  1,  0, 1,  2,  2,  1,  2,  3,
     3, 2, 3, 4,  7,  6,  7,  8,  8,  7,  8,  9,  9,  8,  9,  10, 10, 9, 10, 11, 14, 13, 14, 15,
     4, 3, 4, 5,  5,  4,  5,  6,  6,  5,  6,  7,  10, 9,  10, 11, 3,  2, 3,  4,  4,  3,  4,  5,
     5, 4, 5, 6,  9,  8,  9,  10, 2,  1,  2,  3,  3,  2,  3,  4,  4,  3, 4,  5,  8,  7,  8,  9,
     9, 8, 9, 10, 10, 9,  10, 11, 11, 10, 11, 12, 15, 14, 15, 16, 5,  4, 5,  6,  6,  5,  6,  7,
     7, 6, 7, 8,  11, 10, 11, 12, 4,  3,  4,  5,  5,  4,  5,  6,  6,  5, 6,  7,  10, 9,  10, 11,
     3, 2, 3, 4,  4,  3,  4,  5,  5,  4,  5,  6,  9,  8,  9,  10},
    {9,  8, 7, 8, 10, 9,  8,  9,  11, 10, 9,  10, 15, 14, 13, 14, 5,  4,  3, 4,  6,  5,  4,  5,
     7,  6, 5, 6, 11, 10, 9,  10, 4,  3,  2,  3,  5,  4,  3,  4,  6,  5,  4, 5,  10, 9,  8,  9,
     3,  2, 1, 2, 4,  3,  2,  3,  5,  4,  3,  4,  9,  8,  7,  8,  8,  7,  6, 7,  9,  8,  7,  8,
     10, 9, 8, 9, 14, 13, 12, 13, 4,  3,  2,  3,  5,  4,  3,  4,  6,  5,  4, 5,  10, 9,  8,  9,
     3,  2, 1, 2, 4,  3,  2,  3,  5,  4,  3,  4,  9,  8,  7,  8,  2,  1,  0, 1,  3,  2,  1,  2,
     4,  3, 2, 3, 8,  7,  6,  7,  9,  8,  7,  8,  10, 9,  8,  9,  11, 10, 9, 10, 15, 14, 13, 14,
     5,  4, 3, 4, 6,  5,  4,  5,  7,  6,  5,  6,  11, 10, 9,  10, 4,  3,  2, 3,  5,  4,  3,  4,
     6,  5, 4, 5, 10, 9,  8,  9,  3,  2,  1,  2,  4,  3,  2,  3,  5,  4,  3, 4,  9,  8,  7,  8,
     10, 9, 8, 9, 11, 10, 9,  10, 12, 11, 10, 11, 16, 15, 14, 15, 6,  5,  4, 5,  7,  6,  5,  6,
     8,  7, 6, 7, 12, 11, 10, 11, 5,  4,  3,  4,  6,  5,  4,  5,  7,  6,  5, 6,  11, 10, 9,  10,
     4,  3, 2, 3, 5,  4,  3,  4,  6,  5,  4,  5,  10, 9,  8,  9},
    {13, 9,  8, 7, 14, 10, 9,  8,  15, 11, 10, 9,  19, 15, 14, 13, 9,  5,  4,  3, 10, 6,  5,  4,
     11, 7,  6, 5, 15, 11, 10, 9,  8,  4,  3,  2,  9,  5,  4,  3,  10, 6,  5,  4, 14, 10, 9,  8,
     7,  3,  2, 1, 8,  4,  3,  2,  9,  5,  4,  3,  13, 9,  8,  7,  12, 8,  7,  6, 13, 9,  8,  7,
     14, 10, 9, 8, 18, 14, 13, 12, 8,  4,  3,  2,  9,  5,  4,  3,  10, 6,  5,  4, 14, 10, 9,  8,
     7,  3,  2, 1, 8,  4,  3,  2,  9,  5,  4,  3,  13, 9,  8,  7,  6,  2,  1,  0, 7,  3,  2,  1,
     8,  4,  3, 2, 12, 8,  7,  6,  13, 9,  8,  7,  14, 10, 9,  8,  15, 11, 10, 9, 19, 15, 14, 13,
     9,  5,  4, 3, 10, 6,  5,  4,  11, 7,  6,  5,  15, 11, 10, 9,  8,  4,  3,  2, 9,  5,  4,  3,
     10, 6,  5, 4, 14, 10, 9,  8,  7,  3,  2,  1,  8,  4,  3,  2,  9,  5,  4,  3, 13, 9,  8,  7,
     14, 10, 9, 8, 15, 11, 10, 9,  16, 12, 11, 10, 20, 16, 15, 14, 10, 6,  5,  4, 11, 7,  6,  5,
     12, 8,  7, 6, 16, 12, 11, 10, 9,  5,  4,  3,  10, 6,  5,  4,  11, 7,  6,  5, 15, 11, 10, 9,
     8,  4,  3, 2, 9,  5,  4,  3,  10, 6,  5,  4,  14, 10, 9,  8},
    {8, 9,  10, 14, 7, 8, 9,  13, 8, 9,  10, 14, 9,  10, 11, 15, 4, 5, 6,  10, 3, 4,  5,  9,
     4, 5,  6,  10, 5, 6, 7,  11, 3, 4,  5,  9,  2,  3,  4,  8,  3, 4, 5,  9,  4, 5,  6,  10,
     2, 3,  4,  8,  1, 2, 3,  7,  2, 3,  4,  8,  3,  4,  5,  9,  7, 8, 9,  13, 6, 7,  8,  12,
     7, 8,  9,  13, 8, 9, 10, 14, 3, 4,  5,  9,  2,  3,  4,  8,  3, 4, 5,  9,  4, 5,  6,  10,
     2, 3,  4,  8,  1, 2, 3,  7,  2, 3,  4,  8,  3,  4,  5,  9,  1, 2, 3,  7,  0, 1,  2,  6,
     1, 2,  3,  7,  2, 3, 4,  8,  8, 9,  10, 14, 7,  8,  9,  13, 8, 9, 10, 14, 9, 10, 11, 15,
     4, 5,  6,  10, 3, 4, 5,  9,  4, 5,  6,  10, 5,  6,  7,  11, 3, 4, 5,  9,  2, 3,  4,  8,
     3, 4,  5,  9,  4, 5, 6,  10, 2, 3,  4,  8,  1,  2,  3,  7,  2, 3, 4,  8,  3, 4,  5,  9,
     9, 10, 11, 15, 8, 9, 10, 14, 9, 10, 11, 15, 10, 11, 12, 16, 5, 6, 7,  11, 4, 5,  6,  10,
     5, 6,  7,  11, 6, 7, 8,  12, 4, 5,  6,  10, 3,  4,  5,  9,  4, 5, 6,  10, 5, 6,  7,  11,
     3, 4,  5,  9,  2, 3, 4,  8,  3, 4,  5,  9,  4,  5,  6,  10},
    {9, 8,  9, 10, 8, 7, 8, 9, 9, 8,  9,  10, 10, 9,  10, 11, 5, 4,  5,  6, 4,  3,  4,  5,  5,  4,
     5, 6,  6, 5,  6, 7, 4, 3, 4, 5,  3,  2,  3,  4,  4,  3,  4, 5,  5,  4, 5,  6,  3,  2,  3,  4,
     2, 1,  2, 3,  3, 2, 3, 4, 4, 3,  4,  5,  8,  7,  8,  9,  7, 6,  7,  8, 8,  7,  8,  9,  9,  8,
     9, 10, 4, 3,  4, 5, 3, 2, 3, 4,  4,  3,  4,  5,  5,  4,  5, 6,  3,  2, 3,  4,  2,  1,  2,  3,
     3, 2,  3, 4,  4, 3, 4, 5, 2, 1,  2,  3,  1,  0,  1,  2,  2, 1,  2,  3, 3,  2,  3,  4,  9,  8,
     9, 10, 8, 7,  8, 9, 9, 8, 9, 10, 10, 9,  10, 11, 5,  4,  5, 6,  4,  3, 4,  5,  5,  4,  5,  6,
     6, 5,  6, 7,  4, 3, 4, 5, 3, 2,  3,  4,  4,  3,  4,  5,  5, 4,  5,  6, 3,  2,  3,  4,  2,  1,
     2, 3,  3, 2,  3, 4, 4, 3, 4, 5,  10, 9,  10, 11, 9,  8,  9, 10, 10, 9, 10, 11, 11, 10, 11, 12,
     6, 5,  6, 7,  5, 4, 5, 6, 6, 5,  6,  7,  7,  6,  7,  8,  5, 4,  5,  6, 4,  3,  4,  5,  5,  4,
     5, 6,  6, 5,  6, 7, 4, 3, 4, 5,  3,  2,  3,  4,  4,  3,  4, 5,  5,  4, 5,  6},
    {10, 9, 8, 9, 9, 8, 7,  8, 10, 9, 8,  9,  11, 10, 9,  10, 6, 5, 4,  5,  5, 4,  3,  4,  6,  5,
     4,  5, 7, 6, 5, 6, 5,  4, 3,  4, 4,  3,  2,  3,  5,  4,  3, 4, 6,  5,  4, 5,  4,  3,  2,  3,
     3,  2, 1, 2, 4, 3, 2,  3, 5,  4, 3,  4,  9,  8,  7,  8,  8, 7, 6,  7,  9, 8,  7,  8,  10, 9,
     8,  9, 5, 4, 3, 4, 4,  3, 2,  3, 5,  4,  3,  4,  6,  5,  4, 5, 4,  3,  2, 3,  3,  2,  1,  2,
     4,  3, 2, 3, 5, 4, 3,  4, 3,  2, 1,  2,  2,  1,  0,  1,  3, 2, 1,  2,  4, 3,  2,  3,  10, 9,
     8,  9, 9, 8, 7, 8, 10, 9, 8,  9, 11, 10, 9,  10, 6,  5,  4, 5, 5,  4,  3, 4,  6,  5,  4,  5,
     7,  6, 5, 6, 5, 4, 3,  4, 4,  3, 2,  3,  5,  4,  3,  4,  6, 5, 4,  5,  4, 3,  2,  3,  3,  2,
     1,  2, 4, 3, 2, 3, 5,  4, 3,  4, 11, 10, 9,  10, 10, 9,  8, 9, 11, 10, 9, 10, 12, 11, 10, 11,
     7,  6, 5, 6, 6, 5, 4,  5, 7,  6, 5,  6,  8,  7,  6,  7,  6, 5, 4,  5,  5, 4,  3,  4,  6,  5,
     4,  5, 7, 6, 5, 6, 5,  4, 3,  4, 4,  3,  2,  3,  5,  4,  3, 4, 6,  5,  4, 5},
    {14, 10, 9,  8, 13, 9,  8, 7, 14, 10, 9,  8, 15, 11, 10, 9,  10, 6,  5, 4, 9,  5,  4,  3,
     10, 6,  5,  4, 11, 7,  6, 5, 9,  5,  4,  3, 8,  4,  3,  2,  9,  5,  4, 3, 10, 6,  5,  4,
     8,  4,  3,  2, 7,  3,  2, 1, 8,  4,  3,  2, 9,  5,  4,  3,  13, 9,  8, 7, 12, 8,  7,  6,
     13, 9,  8,  7, 14, 10, 9, 8, 9,  5,  4,  3, 8,  4,  3,  2,  9,  5,  4, 3, 10, 6,  5,  4,
     8,  4,  3,  2, 7,  3,  2, 1, 8,  4,  3,  2, 9,  5,  4,  3,  7,  3,  2, 1, 6,  2,  1,  0,
     7,  3,  2,  1, 8,  4,  3, 2, 14, 10, 9,  8, 13, 9,  8,  7,  14, 10, 9, 8, 15, 11, 10, 9,
     10, 6,  5,  4, 9,  5,  4, 3, 10, 6,  5,  4, 11, 7,  6,  5,  9,  5,  4, 3, 8,  4,  3,  2,
     9,  5,  4,  3, 10, 6,  5, 4, 8,  4,  3,  2, 7,  3,  2,  1,  8,  4,  3, 2, 9,  5,  4,  3,
     15, 11, 10, 9, 14, 10, 9, 8, 15, 11, 10, 9, 16, 12, 11, 10, 11, 7,  6, 5, 10, 6,  5,  4,
     11, 7,  6,  5, 12, 8,  7, 6, 10, 6,  5,  4, 9,  5,  4,  3,  10, 6,  5, 4, 11, 7,  6,  5,
     9,  5,  4,  3, 8,  4,  3, 2, 9,  5,  4,  3, 10, 6,  5,  4},
    {9,  10, 11, 15, 8, 9,  10, 14, 7, 8,  9,  13, 8, 9,  10, 14, 5, 6, 7,  11, 4, 5, 6,  10,
     3,  4,  5,  9,  4, 5,  6,  10, 4, 5,  6,  10, 3, 4,  5,  9,  2, 3, 4,  8,  3, 4, 5,  9,
     3,  4,  5,  9,  2, 3,  4,  8,  1, 2,  3,  7,  2, 3,  4,  8,  8, 9, 10, 14, 7, 8, 9,  13,
     6,  7,  8,  12, 7, 8,  9,  13, 4, 5,  6,  10, 3, 4,  5,  9,  2, 3, 4,  8,  3, 4, 5,  9,
     3,  4,  5,  9,  2, 3,  4,  8,  1, 2,  3,  7,  2, 3,  4,  8,  2, 3, 4,  8,  1, 2, 3,  7,
     0,  1,  2,  6,  1, 2,  3,  7,  9, 10, 11, 15, 8, 9,  10, 14, 7, 8, 9,  13, 8, 9, 10, 14,
     5,  6,  7,  11, 4, 5,  6,  10, 3, 4,  5,  9,  4, 5,  6,  10, 4, 5, 6,  10, 3, 4, 5,  9,
     2,  3,  4,  8,  3, 4,  5,  9,  3, 4,  5,  9,  2, 3,  4,  8,  1, 2, 3,  7,  2, 3, 4,  8,
     10, 11, 12, 16, 9, 10, 11, 15, 8, 9,  10, 14, 9, 10, 11, 15, 6, 7, 8,  12, 5, 6, 7,  11,
     4,  5,  6,  10, 5, 6,  7,  11, 5, 6,  7,  11, 4, 5,  6,  10, 3, 4, 5,  9,  4, 5, 6,  10,
     4,  5,  6,  10, 3, 4,  5,  9,  2, 3,  4,  8,  3, 4,  5,  9},
    {10, 9,  10, 11, 9, 8,  9, 10, 8, 7, 8,  9,  9,  8,  9,  10, 6,  5,  6, 7, 5, 4,  5,  6, 4,  3,
     4,  5,  5,  4,  5, 6,  5, 4,  5, 6, 4,  3,  4,  5,  3,  2,  3,  4,  4, 3, 4, 5,  4,  3, 4,  5,
     3,  2,  3,  4,  2, 1,  2, 3,  3, 2, 3,  4,  9,  8,  9,  10, 8,  7,  8, 9, 7, 6,  7,  8, 8,  7,
     8,  9,  5,  4,  5, 6,  4, 3,  4, 5, 3,  2,  3,  4,  4,  3,  4,  5,  4, 3, 4, 5,  3,  2, 3,  4,
     2,  1,  2,  3,  3, 2,  3, 4,  3, 2, 3,  4,  2,  1,  2,  3,  1,  0,  1, 2, 2, 1,  2,  3, 10, 9,
     10, 11, 9,  8,  9, 10, 8, 7,  8, 9, 9,  8,  9,  10, 6,  5,  6,  7,  5, 4, 5, 6,  4,  3, 4,  5,
     5,  4,  5,  6,  5, 4,  5, 6,  4, 3, 4,  5,  3,  2,  3,  4,  4,  3,  4, 5, 4, 3,  4,  5, 3,  2,
     3,  4,  2,  1,  2, 3,  3, 2,  3, 4, 11, 10, 11, 12, 10, 9,  10, 11, 9, 8, 9, 10, 10, 9, 10, 11,
     7,  6,  7,  8,  6, 5,  6, 7,  5, 4, 5,  6,  6,  5,  6,  7,  6,  5,  6, 7, 5, 4,  5,  6, 4,  3,
     4,  5,  5,  4,  5, 6,  5, 4,  5, 6, 4,  3,  4,  5,  3,  2,  3,  4,  4, 3, 4, 5},
    {11, 10, 9,  10, 10, 9, 8, 9, 9, 8, 7,  8,  10, 9,  8,  9,  7, 6,  5,  6, 6, 5, 4,  5,  5,  4,
     3,  4,  6,  5,  4,  5, 6, 5, 4, 5, 5,  4,  3,  4,  4,  3,  2, 3,  5,  4, 3, 4, 5,  4,  3,  4,
     4,  3,  2,  3,  3,  2, 1, 2, 4, 3, 2,  3,  10, 9,  8,  9,  9, 8,  7,  8, 8, 7, 6,  7,  9,  8,
     7,  8,  6,  5,  4,  5, 5, 4, 3, 4, 4,  3,  2,  3,  5,  4,  3, 4,  5,  4, 3, 4, 4,  3,  2,  3,
     3,  2,  1,  2,  4,  3, 2, 3, 4, 3, 2,  3,  3,  2,  1,  2,  2, 1,  0,  1, 3, 2, 1,  2,  11, 10,
     9,  10, 10, 9,  8,  9, 9, 8, 7, 8, 10, 9,  8,  9,  7,  6,  5, 6,  6,  5, 4, 5, 5,  4,  3,  4,
     6,  5,  4,  5,  6,  5, 4, 5, 5, 4, 3,  4,  4,  3,  2,  3,  5, 4,  3,  4, 5, 4, 3,  4,  4,  3,
     2,  3,  3,  2,  1,  2, 4, 3, 2, 3, 12, 11, 10, 11, 11, 10, 9, 10, 10, 9, 8, 9, 11, 10, 9,  10,
     8,  7,  6,  7,  7,  6, 5, 6, 6, 5, 4,  5,  7,  6,  5,  6,  7, 6,  5,  6, 6, 5, 4,  5,  5,  4,
     3,  4,  6,  5,  4,  5, 6, 5, 4, 5, 5,  4,  3,  4,  4,  3,  2, 3,  5,  4, 3, 4},
    {15, 11, 10, 9,  14, 10, 9,  8, 13, 9,  8,  7, 14, 10, 9,  8, 11, 7,  6, 5, 10, 6,  5, 4,
     9,  5,  4,  3,  10, 6,  5,  4, 10, 6,  5,  4, 9,  5,  4,  3, 8,  4,  3, 2, 9,  5,  4, 3,
     9,  5,  4,  3,  8,  4,  3,  2, 7,  3,  2,  1, 8,  4,  3,  2, 14, 10, 9, 8, 13, 9,  8, 7,
     12, 8,  7,  6,  13, 9,  8,  7, 10, 6,  5,  4, 9,  5,  4,  3, 8,  4,  3, 2, 9,  5,  4, 3,
     9,  5,  4,  3,  8,  4,  3,  2, 7,  3,  2,  1, 8,  4,  3,  2, 8,  4,  3, 2, 7,  3,  2, 1,
     6,  2,  1,  0,  7,  3,  2,  1, 15, 11, 10, 9, 14, 10, 9,  8, 13, 9,  8, 7, 14, 10, 9, 8,
     11, 7,  6,  5,  10, 6,  5,  4, 9,  5,  4,  3, 10, 6,  5,  4, 10, 6,  5, 4, 9,  5,  4, 3,
     8,  4,  3,  2,  9,  5,  4,  3, 9,  5,  4,  3, 8,  4,  3,  2, 7,  3,  2, 1, 8,  4,  3, 2,
     16, 12, 11, 10, 15, 11, 10, 9, 14, 10, 9,  8, 15, 11, 10, 9, 12, 8,  7, 6, 11, 7,  6, 5,
     10, 6,  5,  4,  11, 7,  6,  5, 11, 7,  6,  5, 10, 6,  5,  4, 9,  5,  4, 3, 10, 6,  5, 4,
     10, 6,  5,  4,  9,  5,  4,  3, 8,  4,  3,  2, 9,  5,  4,  3},
    {13, 14, 15, 19, 9,  10, 11, 15, 8,  9,  10, 14, 7, 8,  9,  13, 9,  10, 11, 15, 5, 6, 7,  11,
     4,  5,  6,  10, 3,  4,  5,  9,  8,  9,  10, 14, 4, 5,  6,  10, 3,  4,  5,  9,  2, 3, 4,  8,
     7,  8,  9,  13, 3,  4,  5,  9,  2,  3,  4,  8,  1, 2,  3,  7,  12, 13, 14, 18, 8, 9, 10, 14,
     7,  8,  9,  13, 6,  7,  8,  12, 8,  9,  10, 14, 4, 5,  6,  10, 3,  4,  5,  9,  2, 3, 4,  8,
     7,  8,  9,  13, 3,  4,  5,  9,  2,  3,  4,  8,  1, 2,  3,  7,  6,  7,  8,  12, 2, 3, 4,  8,
     1,  2,  3,  7,  0,  1,  2,  6,  13, 14, 15, 19, 9, 10, 11, 15, 8,  9,  10, 14, 7, 8, 9,  13,
     9,  10, 11, 15, 5,  6,  7,  11, 4,  5,  6,  10, 3, 4,  5,  9,  8,  9,  10, 14, 4, 5, 6,  10,
     3,  4,  5,  9,  2,  3,  4,  8,  7,  8,  9,  13, 3, 4,  5,  9,  2,  3,  4,  8,  1, 2, 3,  7,
     14, 15, 16, 20, 10, 11, 12, 16, 9,  10, 11, 15, 8, 9,  10, 14, 10, 11, 12, 16, 6, 7, 8,  12,
     5,  6,  7,  11, 4,  5,  6,  10, 9,  10, 11, 15, 5, 6,  7,  11, 4,  5,  6,  10, 3, 4, 5,  9,
     8,  9,  10, 14, 4,  5,  6,  10, 3,  4,  5,  9,  2, 3,  4,  8},
    {14, 13, 14, 15, 10, 9,  10, 11, 9,  8,  9,  10, 8,  7, 8,  9,  10, 9,  10, 11, 6, 5, 6, 7,
     5,  4,  5,  6,  4,  3,  4,  5,  9,  8,  9,  10, 5,  4, 5,  6,  4,  3,  4,  5,  3, 2, 3, 4,
     8,  7,  8,  9,  4,  3,  4,  5,  3,  2,  3,  4,  2,  1, 2,  3,  13, 12, 13, 14, 9, 8, 9, 10,
     8,  7,  8,  9,  7,  6,  7,  8,  9,  8,  9,  10, 5,  4, 5,  6,  4,  3,  4,  5,  3, 2, 3, 4,
     8,  7,  8,  9,  4,  3,  4,  5,  3,  2,  3,  4,  2,  1, 2,  3,  7,  6,  7,  8,  3, 2, 3, 4,
     2,  1,  2,  3,  1,  0,  1,  2,  14, 13, 14, 15, 10, 9, 10, 11, 9,  8,  9,  10, 8, 7, 8, 9,
     10, 9,  10, 11, 6,  5,  6,  7,  5,  4,  5,  6,  4,  3, 4,  5,  9,  8,  9,  10, 5, 4, 5, 6,
     4,  3,  4,  5,  3,  2,  3,  4,  8,  7,  8,  9,  4,  3, 4,  5,  3,  2,  3,  4,  2, 1, 2, 3,
     15, 14, 15, 16, 11, 10, 11, 12, 10, 9,  10, 11, 9,  8, 9,  10, 11, 10, 11, 12, 7, 6, 7, 8,
     6,  5,  6,  7,  5,  4,  5,  6,  10, 9,  10, 11, 6,  5, 6,  7,  5,  4,  5,  6,  4, 3, 4, 5,
     9,  8,  9,  10, 5,  4,  5,  6,  4,  3,  4,  5,  3,  2, 3,  4},
    {15, 14, 13, 14, 11, 10, 9,  10, 10, 9,  8,  9,  9,  8,  7, 8,  11, 10, 9,  10, 7,  6, 5, 6,
     6,  5,  4,  5,  5,  4,  3,  4,  10, 9,  8,  9,  6,  5,  4, 5,  5,  4,  3,  4,  4,  3, 2, 3,
     9,  8,  7,  8,  5,  4,  3,  4,  4,  3,  2,  3,  3,  2,  1, 2,  14, 13, 12, 13, 10, 9, 8, 9,
     9,  8,  7,  8,  8,  7,  6,  7,  10, 9,  8,  9,  6,  5,  4, 5,  5,  4,  3,  4,  4,  3, 2, 3,
     9,  8,  7,  8,  5,  4,  3,  4,  4,  3,  2,  3,  3,  2,  1, 2,  8,  7,  6,  7,  4,  3, 2, 3,
     3,  2,  1,  2,  2,  1,  0,  1,  15, 14, 13, 14, 11, 10, 9, 10, 10, 9,  8,  9,  9,  8, 7, 8,
     11, 10, 9,  10, 7,  6,  5,  6,  6,  5,  4,  5,  5,  4,  3, 4,  10, 9,  8,  9,  6,  5, 4, 5,
     5,  4,  3,  4,  4,  3,  2,  3,  9,  8,  7,  8,  5,  4,  3, 4,  4,  3,  2,  3,  3,  2, 1, 2,
     16, 15, 14, 15, 12, 11, 10, 11, 11, 10, 9,  10, 10, 9,  8, 9,  12, 11, 10, 11, 8,  7, 6, 7,
     7,  6,  5,  6,  6,  5,  4,  5,  11, 10, 9,  10, 7,  6,  5, 6,  6,  5,  4,  5,  5,  4, 3, 4,
     10, 9,  8,  9,  6,  5,  4,  5,  5,  4,  3,  4,  4,  3,  2, 3},
    {19, 15, 14, 13, 15, 11, 10, 9,  14, 10, 9,  8,  13, 9,  8,  7, 15, 11, 10, 9,  11, 7,  6, 5,
     10, 6,  5,  4,  9,  5,  4,  3,  14, 10, 9,  8,  10, 6,  5,  4, 9,  5,  4,  3,  8,  4,  3, 2,
     13, 9,  8,  7,  9,  5,  4,  3,  8,  4,  3,  2,  7,  3,  2,  1, 18, 14, 13, 12, 14, 10, 9, 8,
     13, 9,  8,  7,  12, 8,  7,  6,  14, 10, 9,  8,  10, 6,  5,  4, 9,  5,  4,  3,  8,  4,  3, 2,
     13, 9,  8,  7,  9,  5,  4,  3,  8,  4,  3,  2,  7,  3,  2,  1, 12, 8,  7,  6,  8,  4,  3, 2,
     7,  3,  2,  1,  6,  2,  1,  0,  19, 15, 14, 13, 15, 11, 10, 9, 14, 10, 9,  8,  13, 9,  8, 7,
     15, 11, 10, 9,  11, 7,  6,  5,  10, 6,  5,  4,  9,  5,  4,  3, 14, 10, 9,  8,  10, 6,  5, 4,
     9,  5,  4,  3,  8,  4,  3,  2,  13, 9,  8,  7,  9,  5,  4,  3, 8,  4,  3,  2,  7,  3,  2, 1,
     20, 16, 15, 14, 16, 12, 11, 10, 15, 11, 10, 9,  14, 10, 9,  8, 16, 12, 11, 10, 12, 8,  7, 6,
     11, 7,  6,  5,  10, 6,  5,  4,  15, 11, 10, 9,  11, 7,  6,  5, 10, 6,  5,  4,  9,  5,  4, 3,
     14, 10, 9,  8,  10, 6,  5,  4,  9,  5,  4,  3,  8,  4,  3,  2},
    {2, 3,  4,  8,  3,  4,  5,  9,  4,  5,  6,  10, 8,  9,  10, 14, 3, 4, 5,  9,  4,  5,  6,  10,
     5, 6,  7,  11, 9,  10, 11, 15, 4,  5,  6,  10, 5,  6,  7,  11, 6, 7, 8,  12, 10, 11, 12, 16,
     8, 9,  10, 14, 9,  10, 11, 15, 10, 11, 12, 16, 14, 15, 16, 20, 1, 2, 3,  7,  2,  3,  4,  8,
     3, 4,  5,  9,  7,  8,  9,  13, 2,  3,  4,  8,  3,  4,  5,  9,  4, 5, 6,  10, 8,  9,  10, 14,
     3, 4,  5,  9,  4,  5,  6,  10, 5,  6,  7,  11, 9,  10, 11, 15, 7, 8, 9,  13, 8,  9,  10, 14,
     9, 10, 11, 15, 13, 14, 15, 19, 0,  1,  2,  6,  1,  2,  3,  7,  2, 3, 4,  8,  6,  7,  8,  12,
     1, 2,  3,  7,  2,  3,  4,  8,  3,  4,  5,  9,  7,  8,  9,  13, 2, 3, 4,  8,  3,  4,  5,  9,
     4, 5,  6,  10, 8,  9,  10, 14, 6,  7,  8,  12, 7,  8,  9,  13, 8, 9, 10, 14, 12, 13, 14, 18,
     1, 2,  3,  7,  2,  3,  4,  8,  3,  4,  5,  9,  7,  8,  9,  13, 2, 3, 4,  8,  3,  4,  5,  9,
     4, 5,  6,  10, 8,  9,  10, 14, 3,  4,  5,  9,  4,  5,  6,  10, 5, 6, 7,  11, 9,  10, 11, 15,
     7, 8,  9,  13, 8,  9,  10, 14, 9,  10, 11, 15, 13, 14, 15, 19},
    {3,  2, 3,  4,  4,  3,  4,  5,  5,  4,  5,  6,  9,  8,  9,  10, 4, 3, 4, 5,  5,  4,  5,  6,
     6,  5, 6,  7,  10, 9,  10, 11, 5,  4,  5,  6,  6,  5,  6,  7,  7, 6, 7, 8,  11, 10, 11, 12,
     9,  8, 9,  10, 10, 9,  10, 11, 11, 10, 11, 12, 15, 14, 15, 16, 2, 1, 2, 3,  3,  2,  3,  4,
     4,  3, 4,  5,  8,  7,  8,  9,  3,  2,  3,  4,  4,  3,  4,  5,  5, 4, 5, 6,  9,  8,  9,  10,
     4,  3, 4,  5,  5,  4,  5,  6,  6,  5,  6,  7,  10, 9,  10, 11, 8, 7, 8, 9,  9,  8,  9,  10,
     10, 9, 10, 11, 14, 13, 14, 15, 1,  0,  1,  2,  2,  1,  2,  3,  3, 2, 3, 4,  7,  6,  7,  8,
     2,  1, 2,  3,  3,  2,  3,  4,  4,  3,  4,  5,  8,  7,  8,  9,  3, 2, 3, 4,  4,  3,  4,  5,
     5,  4, 5,  6,  9,  8,  9,  10, 7,  6,  7,  8,  8,  7,  8,  9,  9, 8, 9, 10, 13, 12, 13, 14,
     2,  1, 2,  3,  3,  2,  3,  4,  4,  3,  4,  5,  8,  7,  8,  9,  3, 2, 3, 4,  4,  3,  4,  5,
     5,  4, 5,  6,  9,  8,  9,  10, 4,  3,  4,  5,  5,  4,  5,  6,  6, 5, 6, 7,  10, 9,  10, 11,
     8,  7, 8,  9,  9,  8,  9,  10, 10, 9,  10, 11, 14, 13, 14, 15},
    {4,  3,  2, 3,  5,  4,  3,  4,  6,  5,  4,  5,  10, 9,  8,  9,  5,  4, 3, 4, 6,  5,  4,  5,
     7,  6,  5, 6,  11, 10, 9,  10, 6,  5,  4,  5,  7,  6,  5,  6,  8,  7, 6, 7, 12, 11, 10, 11,
     10, 9,  8, 9,  11, 10, 9,  10, 12, 11, 10, 11, 16, 15, 14, 15, 3,  2, 1, 2, 4,  3,  2,  3,
     5,  4,  3, 4,  9,  8,  7,  8,  4,  3,  2,  3,  5,  4,  3,  4,  6,  5, 4, 5, 10, 9,  8,  9,
     5,  4,  3, 4,  6,  5,  4,  5,  7,  6,  5,  6,  11, 10, 9,  10, 9,  8, 7, 8, 10, 9,  8,  9,
     11, 10, 9, 10, 15, 14, 13, 14, 2,  1,  0,  1,  3,  2,  1,  2,  4,  3, 2, 3, 8,  7,  6,  7,
     3,  2,  1, 2,  4,  3,  2,  3,  5,  4,  3,  4,  9,  8,  7,  8,  4,  3, 2, 3, 5,  4,  3,  4,
     6,  5,  4, 5,  10, 9,  8,  9,  8,  7,  6,  7,  9,  8,  7,  8,  10, 9, 8, 9, 14, 13, 12, 13,
     3,  2,  1, 2,  4,  3,  2,  3,  5,  4,  3,  4,  9,  8,  7,  8,  4,  3, 2, 3, 5,  4,  3,  4,
     6,  5,  4, 5,  10, 9,  8,  9,  5,  4,  3,  4,  6,  5,  4,  5,  7,  6, 5, 6, 11, 10, 9,  10,
     9,  8,  7, 8,  10, 9,  8,  9,  11, 10, 9,  10, 15, 14, 13, 14},
    {8,  4,  3,  2, 9,  5,  4,  3,  10, 6,  5,  4,  14, 10, 9,  8,  9,  5,  4, 3, 10, 6,  5,  4,
     11, 7,  6,  5, 15, 11, 10, 9,  10, 6,  5,  4,  11, 7,  6,  5,  12, 8,  7, 6, 16, 12, 11, 10,
     14, 10, 9,  8, 15, 11, 10, 9,  16, 12, 11, 10, 20, 16, 15, 14, 7,  3,  2, 1, 8,  4,  3,  2,
     9,  5,  4,  3, 13, 9,  8,  7,  8,  4,  3,  2,  9,  5,  4,  3,  10, 6,  5, 4, 14, 10, 9,  8,
     9,  5,  4,  3, 10, 6,  5,  4,  11, 7,  6,  5,  15, 11, 10, 9,  13, 9,  8, 7, 14, 10, 9,  8,
     15, 11, 10, 9, 19, 15, 14, 13, 6,  2,  1,  0,  7,  3,  2,  1,  8,  4,  3, 2, 12, 8,  7,  6,
     7,  3,  2,  1, 8,  4,  3,  2,  9,  5,  4,  3,  13, 9,  8,  7,  8,  4,  3, 2, 9,  5,  4,  3,
     10, 6,  5,  4, 14, 10, 9,  8,  12, 8,  7,  6,  13, 9,  8,  7,  14, 10, 9, 8, 18, 14, 13, 12,
     7,  3,  2,  1, 8,  4,  3,  2,  9,  5,  4,  3,  13, 9,  8,  7,  8,  4,  3, 2, 9,  5,  4,  3,
     10, 6,  5,  4, 14, 10, 9,  8,  9,  5,  4,  3,  10, 6,  5,  4,  11, 7,  6, 5, 15, 11, 10, 9,
     13, 9,  8,  7, 14, 10, 9,  8,  15, 11, 10, 9,  19, 15, 14, 13},
    {3, 4,  5,  9,  2, 3,  4,  8,  3, 4,  5,  9,  4,  5,  6,  10, 4, 5, 6,  10, 3, 4, 5,  9,
     4, 5,  6,  10, 5, 6,  7,  11, 5, 6,  7,  11, 4,  5,  6,  10, 5, 6, 7,  11, 6, 7, 8,  12,
     9, 10, 11, 15, 8, 9,  10, 14, 9, 10, 11, 15, 10, 11, 12, 16, 2, 3, 4,  8,  1, 2, 3,  7,
     2, 3,  4,  8,  3, 4,  5,  9,  3, 4,  5,  9,  2,  3,  4,  8,  3, 4, 5,  9,  4, 5, 6,  10,
     4, 5,  6,  10, 3, 4,  5,  9,  4, 5,  6,  10, 5,  6,  7,  11, 8, 9, 10, 14, 7, 8, 9,  13,
     8, 9,  10, 14, 9, 10, 11, 15, 1, 2,  3,  7,  0,  1,  2,  6,  1, 2, 3,  7,  2, 3, 4,  8,
     2, 3,  4,  8,  1, 2,  3,  7,  2, 3,  4,  8,  3,  4,  5,  9,  3, 4, 5,  9,  2, 3, 4,  8,
     3, 4,  5,  9,  4, 5,  6,  10, 7, 8,  9,  13, 6,  7,  8,  12, 7, 8, 9,  13, 8, 9, 10, 14,
     2, 3,  4,  8,  1, 2,  3,  7,  2, 3,  4,  8,  3,  4,  5,  9,  3, 4, 5,  9,  2, 3, 4,  8,
     3, 4,  5,  9,  4, 5,  6,  10, 4, 5,  6,  10, 3,  4,  5,  9,  4, 5, 6,  10, 5, 6, 7,  11,
     8, 9,  10, 14, 7, 8,  9,  13, 8, 9,  10, 14, 9,  10, 11, 15},
    {4, 3, 4, 5,  3,  2, 3,  4,  4,  3,  4,  5,  5, 4, 5, 6, 5, 4,  5,  6,  4,  3, 4,  5,  5,  4,
     5, 6, 6, 5,  6,  7, 6,  5,  6,  7,  5,  4,  5, 6, 6, 5, 6, 7,  7,  6,  7,  8, 10, 9,  10, 11,
     9, 8, 9, 10, 10, 9, 10, 11, 11, 10, 11, 12, 3, 2, 3, 4, 2, 1,  2,  3,  3,  2, 3,  4,  4,  3,
     4, 5, 4, 3,  4,  5, 3,  2,  3,  4,  4,  3,  4, 5, 5, 4, 5, 6,  5,  4,  5,  6, 4,  3,  4,  5,
     5, 4, 5, 6,  6,  5, 6,  7,  9,  8,  9,  10, 8, 7, 8, 9, 9, 8,  9,  10, 10, 9, 10, 11, 2,  1,
     2, 3, 1, 0,  1,  2, 2,  1,  2,  3,  3,  2,  3, 4, 3, 2, 3, 4,  2,  1,  2,  3, 3,  2,  3,  4,
     4, 3, 4, 5,  4,  3, 4,  5,  3,  2,  3,  4,  4, 3, 4, 5, 5, 4,  5,  6,  8,  7, 8,  9,  7,  6,
     7, 8, 8, 7,  8,  9, 9,  8,  9,  10, 3,  2,  3, 4, 2, 1, 2, 3,  3,  2,  3,  4, 4,  3,  4,  5,
     4, 3, 4, 5,  3,  2, 3,  4,  4,  3,  4,  5,  5, 4, 5, 6, 5, 4,  5,  6,  4,  3, 4,  5,  5,  4,
     5, 6, 6, 5,  6,  7, 9,  8,  9,  10, 8,  7,  8, 9, 9, 8, 9, 10, 10, 9,  10, 11},
    {5,  4, 3, 4, 4,  3,  2,  3,  5,  4,  3,  4,  6, 5, 4,  5, 6,  5, 4,  5,  5,  4,  3,  4,  6, 5,
     4,  5, 7, 6, 5,  6,  7,  6,  5,  6,  6,  5,  4, 5, 7,  6, 5,  6, 8,  7,  6,  7,  11, 10, 9, 10,
     10, 9, 8, 9, 11, 10, 9,  10, 12, 11, 10, 11, 4, 3, 2,  3, 3,  2, 1,  2,  4,  3,  2,  3,  5, 4,
     3,  4, 5, 4, 3,  4,  4,  3,  2,  3,  5,  4,  3, 4, 6,  5, 4,  5, 6,  5,  4,  5,  5,  4,  3, 4,
     6,  5, 4, 5, 7,  6,  5,  6,  10, 9,  8,  9,  9, 8, 7,  8, 10, 9, 8,  9,  11, 10, 9,  10, 3, 2,
     1,  2, 2, 1, 0,  1,  3,  2,  1,  2,  4,  3,  2, 3, 4,  3, 2,  3, 3,  2,  1,  2,  4,  3,  2, 3,
     5,  4, 3, 4, 5,  4,  3,  4,  4,  3,  2,  3,  5, 4, 3,  4, 6,  5, 4,  5,  9,  8,  7,  8,  8, 7,
     6,  7, 9, 8, 7,  8,  10, 9,  8,  9,  4,  3,  2, 3, 3,  2, 1,  2, 4,  3,  2,  3,  5,  4,  3, 4,
     5,  4, 3, 4, 4,  3,  2,  3,  5,  4,  3,  4,  6, 5, 4,  5, 6,  5, 4,  5,  5,  4,  3,  4,  6, 5,
     4,  5, 7, 6, 5,  6,  10, 9,  8,  9,  9,  8,  7, 8, 10, 9, 8,  9, 11, 10, 9,  10},
    {9,  5,  4,  3, 8,  4,  3,  2, 9,  5,  4,  3, 10, 6,  5,  4,  10, 6,  5, 4, 9,  5,  4, 3,
     10, 6,  5,  4, 11, 7,  6,  5, 11, 7,  6,  5, 10, 6,  5,  4,  11, 7,  6, 5, 12, 8,  7, 6,
     15, 11, 10, 9, 14, 10, 9,  8, 15, 11, 10, 9, 16, 12, 11, 10, 8,  4,  3, 2, 7,  3,  2, 1,
     8,  4,  3,  2, 9,  5,  4,  3, 9,  5,  4,  3, 8,  4,  3,  2,  9,  5,  4, 3, 10, 6,  5, 4,
     10, 6,  5,  4, 9,  5,  4,  3, 10, 6,  5,  4, 11, 7,  6,  5,  14, 10, 9, 8, 13, 9,  8, 7,
     14, 10, 9,  8, 15, 11, 10, 9, 7,  3,  2,  1, 6,  2,  1,  0,  7,  3,  2, 1, 8,  4,  3, 2,
     8,  4,  3,  2, 7,  3,  2,  1, 8,  4,  3,  2, 9,  5,  4,  3,  9,  5,  4, 3, 8,  4,  3, 2,
     9,  5,  4,  3, 10, 6,  5,  4, 13, 9,  8,  7, 12, 8,  7,  6,  13, 9,  8, 7, 14, 10, 9, 8,
     8,  4,  3,  2, 7,  3,  2,  1, 8,  4,  3,  2, 9,  5,  4,  3,  9,  5,  4, 3, 8,  4,  3, 2,
     9,  5,  4,  3, 10, 6,  5,  4, 10, 6,  5,  4, 9,  5,  4,  3,  10, 6,  5, 4, 11, 7,  6, 5,
     14, 10, 9,  8, 13, 9,  8,  7, 14, 10, 9,  8, 15, 11, 10, 9},
    {4,  5,  6,  10, 3, 4,  5,  9,  2, 3, 4,  8,  3, 4,  5,  9,  5, 6,  7,  11, 4, 5, 6,  10,
     3,  4,  5,  9,  4, 5,  6,  10, 6, 7, 8,  12, 5, 6,  7,  11, 4, 5,  6,  10, 5, 6, 7,  11,
     10, 11, 12, 16, 9, 10, 11, 15, 8, 9, 10, 14, 9, 10, 11, 15, 3, 4,  5,  9,  2, 3, 4,  8,
     1,  2,  3,  7,  2, 3,  4,  8,  4, 5, 6,  10, 3, 4,  5,  9,  2, 3,  4,  8,  3, 4, 5,  9,
     5,  6,  7,  11, 4, 5,  6,  10, 3, 4, 5,  9,  4, 5,  6,  10, 9, 10, 11, 15, 8, 9, 10, 14,
     7,  8,  9,  13, 8, 9,  10, 14, 2, 3, 4,  8,  1, 2,  3,  7,  0, 1,  2,  6,  1, 2, 3,  7,
     3,  4,  5,  9,  2, 3,  4,  8,  1, 2, 3,  7,  2, 3,  4,  8,  4, 5,  6,  10, 3, 4, 5,  9,
     2,  3,  4,  8,  3, 4,  5,  9,  8, 9, 10, 14, 7, 8,  9,  13, 6, 7,  8,  12, 7, 8, 9,  13,
     3,  4,  5,  9,  2, 3,  4,  8,  1, 2, 3,  7,  2, 3,  4,  8,  4, 5,  6,  10, 3, 4, 5,  9,
     2,  3,  4,  8,  3, 4,  5,  9,  5, 6, 7,  11, 4, 5,  6,  10, 3, 4,  5,  9,  4, 5, 6,  10,
     9,  10, 11, 15, 8, 9,  10, 14, 7, 8, 9,  13, 8, 9,  10, 14},
    {5,  4, 5,  6,  4, 3, 4,  5,  3,  2,  3,  4,  4, 3,  4, 5,  6, 5, 6, 7, 5, 4, 5,  6,  4,  3,
     4,  5, 5,  4,  5, 6, 7,  6,  7,  8,  6,  5,  6, 7,  5, 4,  5, 6, 6, 5, 6, 7, 11, 10, 11, 12,
     10, 9, 10, 11, 9, 8, 9,  10, 10, 9,  10, 11, 4, 3,  4, 5,  3, 2, 3, 4, 2, 1, 2,  3,  3,  2,
     3,  4, 5,  4,  5, 6, 4,  3,  4,  5,  3,  2,  3, 4,  4, 3,  4, 5, 6, 5, 6, 7, 5,  4,  5,  6,
     4,  3, 4,  5,  5, 4, 5,  6,  10, 9,  10, 11, 9, 8,  9, 10, 8, 7, 8, 9, 9, 8, 9,  10, 3,  2,
     3,  4, 2,  1,  2, 3, 1,  0,  1,  2,  2,  1,  2, 3,  4, 3,  4, 5, 3, 2, 3, 4, 2,  1,  2,  3,
     3,  2, 3,  4,  5, 4, 5,  6,  4,  3,  4,  5,  3, 2,  3, 4,  4, 3, 4, 5, 9, 8, 9,  10, 8,  7,
     8,  9, 7,  6,  7, 8, 8,  7,  8,  9,  4,  3,  4, 5,  3, 2,  3, 4, 2, 1, 2, 3, 3,  2,  3,  4,
     5,  4, 5,  6,  4, 3, 4,  5,  3,  2,  3,  4,  4, 3,  4, 5,  6, 5, 6, 7, 5, 4, 5,  6,  4,  3,
     4,  5, 5,  4,  5, 6, 10, 9,  10, 11, 9,  8,  9, 10, 8, 7,  8, 9, 9, 8, 9, 10},
    {6,  5,  4, 5,  5,  4, 3,  4,  4,  3,  2,  3,  5,  4, 3, 4, 7, 6, 5,  6, 6,  5, 4,  5,  5,  4,
     3,  4,  6, 5,  4,  5, 8,  7,  6,  7,  7,  6,  5,  6, 6, 5, 4, 5, 7,  6, 5,  6, 12, 11, 10, 11,
     11, 10, 9, 10, 10, 9, 8,  9,  11, 10, 9,  10, 5,  4, 3, 4, 4, 3, 2,  3, 3,  2, 1,  2,  4,  3,
     2,  3,  6, 5,  4,  5, 5,  4,  3,  4,  4,  3,  2,  3, 5, 4, 3, 4, 7,  6, 5,  6, 6,  5,  4,  5,
     5,  4,  3, 4,  6,  5, 4,  5,  11, 10, 9,  10, 10, 9, 8, 9, 9, 8, 7,  8, 10, 9, 8,  9,  4,  3,
     2,  3,  3, 2,  1,  2, 2,  1,  0,  1,  3,  2,  1,  2, 5, 4, 3, 4, 4,  3, 2,  3, 3,  2,  1,  2,
     4,  3,  2, 3,  6,  5, 4,  5,  5,  4,  3,  4,  4,  3, 2, 3, 5, 4, 3,  4, 10, 9, 8,  9,  9,  8,
     7,  8,  8, 7,  6,  7, 9,  8,  7,  8,  5,  4,  3,  4, 4, 3, 2, 3, 3,  2, 1,  2, 4,  3,  2,  3,
     6,  5,  4, 5,  5,  4, 3,  4,  4,  3,  2,  3,  5,  4, 3, 4, 7, 6, 5,  6, 6,  5, 4,  5,  5,  4,
     3,  4,  6, 5,  4,  5, 11, 10, 9,  10, 10, 9,  8,  9, 9, 8, 7, 8, 10, 9, 8,  9},
    {10, 6,  5,  4,  9,  5,  4,  3, 8,  4,  3, 2, 9,  5,  4,  3, 11, 7,  6,  5, 10, 6,  5, 4,
     9,  5,  4,  3,  10, 6,  5,  4, 12, 8,  7, 6, 11, 7,  6,  5, 10, 6,  5,  4, 11, 7,  6, 5,
     16, 12, 11, 10, 15, 11, 10, 9, 14, 10, 9, 8, 15, 11, 10, 9, 9,  5,  4,  3, 8,  4,  3, 2,
     7,  3,  2,  1,  8,  4,  3,  2, 10, 6,  5, 4, 9,  5,  4,  3, 8,  4,  3,  2, 9,  5,  4, 3,
     11, 7,  6,  5,  10, 6,  5,  4, 9,  5,  4, 3, 10, 6,  5,  4, 15, 11, 10, 9, 14, 10, 9, 8,
     13, 9,  8,  7,  14, 10, 9,  8, 8,  4,  3, 2, 7,  3,  2,  1, 6,  2,  1,  0, 7,  3,  2, 1,
     9,  5,  4,  3,  8,  4,  3,  2, 7,  3,  2, 1, 8,  4,  3,  2, 10, 6,  5,  4, 9,  5,  4, 3,
     8,  4,  3,  2,  9,  5,  4,  3, 14, 10, 9, 8, 13, 9,  8,  7, 12, 8,  7,  6, 13, 9,  8, 7,
     9,  5,  4,  3,  8,  4,  3,  2, 7,  3,  2, 1, 8,  4,  3,  2, 10, 6,  5,  4, 9,  5,  4, 3,
     8,  4,  3,  2,  9,  5,  4,  3, 11, 7,  6, 5, 10, 6,  5,  4, 9,  5,  4,  3, 10, 6,  5, 4,
     15, 11, 10, 9,  14, 10, 9,  8, 13, 9,  8, 7, 14, 10, 9,  8},
    {8,  9,  10, 14, 4,  5,  6,  10, 3,  4,  5,  9,  2, 3, 4,  8,  9,  10, 11, 15, 5, 6,  7,  11,
     4,  5,  6,  10, 3,  4,  5,  9,  10, 11, 12, 16, 6, 7, 8,  12, 5,  6,  7,  11, 4, 5,  6,  10,
     14, 15, 16, 20, 10, 11, 12, 16, 9,  10, 11, 15, 8, 9, 10, 14, 7,  8,  9,  13, 3, 4,  5,  9,
     2,  3,  4,  8,  1,  2,  3,  7,  8,  9,  10, 14, 4, 5, 6,  10, 3,  4,  5,  9,  2, 3,  4,  8,
     9,  10, 11, 15, 5,  6,  7,  11, 4,  5,  6,  10, 3, 4, 5,  9,  13, 14, 15, 19, 9, 10, 11, 15,
     8,  9,  10, 14, 7,  8,  9,  13, 6,  7,  8,  12, 2, 3, 4,  8,  1,  2,  3,  7,  0, 1,  2,  6,
     7,  8,  9,  13, 3,  4,  5,  9,  2,  3,  4,  8,  1, 2, 3,  7,  8,  9,  10, 14, 4, 5,  6,  10,
     3,  4,  5,  9,  2,  3,  4,  8,  12, 13, 14, 18, 8, 9, 10, 14, 7,  8,  9,  13, 6, 7,  8,  12,
     7,  8,  9,  13, 3,  4,  5,  9,  2,  3,  4,  8,  1, 2, 3,  7,  8,  9,  10, 14, 4, 5,  6,  10,
     3,  4,  5,  9,  2,  3,  4,  8,  9,  10, 11, 15, 5, 6, 7,  11, 4,  5,  6,  10, 3, 4,  5,  9,
     13, 14, 15, 19, 9,  10, 11, 15, 8,  9,  10, 14, 7, 8, 9,  13},
    {9,  8,  9,  10, 5,  4,  5,  6,  4,  3,  4,  5,  3, 2, 3, 4,  10, 9,  10, 11, 6,  5, 6,  7,
     5,  4,  5,  6,  4,  3,  4,  5,  11, 10, 11, 12, 7, 6, 7, 8,  6,  5,  6,  7,  5,  4, 5,  6,
     15, 14, 15, 16, 11, 10, 11, 12, 10, 9,  10, 11, 9, 8, 9, 10, 8,  7,  8,  9,  4,  3, 4,  5,
     3,  2,  3,  4,  2,  1,  2,  3,  9,  8,  9,  10, 5, 4, 5, 6,  4,  3,  4,  5,  3,  2, 3,  4,
     10, 9,  10, 11, 6,  5,  6,  7,  5,  4,  5,  6,  4, 3, 4, 5,  14, 13, 14, 15, 10, 9, 10, 11,
     9,  8,  9,  10, 8,  7,  8,  9,  7,  6,  7,  8,  3, 2, 3, 4,  2,  1,  2,  3,  1,  0, 1,  2,
     8,  7,  8,  9,  4,  3,  4,  5,  3,  2,  3,  4,  2, 1, 2, 3,  9,  8,  9,  10, 5,  4, 5,  6,
     4,  3,  4,  5,  3,  2,  3,  4,  13, 12, 13, 14, 9, 8, 9, 10, 8,  7,  8,  9,  7,  6, 7,  8,
     8,  7,  8,  9,  4,  3,  4,  5,  3,  2,  3,  4,  2, 1, 2, 3,  9,  8,  9,  10, 5,  4, 5,  6,
     4,  3,  4,  5,  3,  2,  3,  4,  10, 9,  10, 11, 6, 5, 6, 7,  5,  4,  5,  6,  4,  3, 4,  5,
     14, 13, 14, 15, 10, 9,  10, 11, 9,  8,  9,  10, 8, 7, 8, 9},
    {10, 9,  8,  9,  6,  5,  4,  5,  5,  4,  3,  4,  4,  3, 2, 3, 11, 10, 9,  10, 7,  6,  5, 6,
     6,  5,  4,  5,  5,  4,  3,  4,  12, 11, 10, 11, 8,  7, 6, 7, 7,  6,  5,  6,  6,  5,  4, 5,
     16, 15, 14, 15, 12, 11, 10, 11, 11, 10, 9,  10, 10, 9, 8, 9, 9,  8,  7,  8,  5,  4,  3, 4,
     4,  3,  2,  3,  3,  2,  1,  2,  10, 9,  8,  9,  6,  5, 4, 5, 5,  4,  3,  4,  4,  3,  2, 3,
     11, 10, 9,  10, 7,  6,  5,  6,  6,  5,  4,  5,  5,  4, 3, 4, 15, 14, 13, 14, 11, 10, 9, 10,
     10, 9,  8,  9,  9,  8,  7,  8,  8,  7,  6,  7,  4,  3, 2, 3, 3,  2,  1,  2,  2,  1,  0, 1,
     9,  8,  7,  8,  5,  4,  3,  4,  4,  3,  2,  3,  3,  2, 1, 2, 10, 9,  8,  9,  6,  5,  4, 5,
     5,  4,  3,  4,  4,  3,  2,  3,  14, 13, 12, 13, 10, 9, 8, 9, 9,  8,  7,  8,  8,  7,  6, 7,
     9,  8,  7,  8,  5,  4,  3,  4,  4,  3,  2,  3,  3,  2, 1, 2, 10, 9,  8,  9,  6,  5,  4, 5,
     5,  4,  3,  4,  4,  3,  2,  3,  11, 10, 9,  10, 7,  6, 5, 6, 6,  5,  4,  5,  5,  4,  3, 4,
     15, 14, 13, 14, 11, 10, 9,  10, 10, 9,  8,  9,  9,  8, 7, 8},
    {14, 10, 9,  8,  10, 6,  5,  4,  9,  5,  4,  3,  8,  4,  3, 2, 15, 11, 10, 9,  11, 7,  6,  5,
     10, 6,  5,  4,  9,  5,  4,  3,  16, 12, 11, 10, 12, 8,  7, 6, 11, 7,  6,  5,  10, 6,  5,  4,
     20, 16, 15, 14, 16, 12, 11, 10, 15, 11, 10, 9,  14, 10, 9, 8, 13, 9,  8,  7,  9,  5,  4,  3,
     8,  4,  3,  2,  7,  3,  2,  1,  14, 10, 9,  8,  10, 6,  5, 4, 9,  5,  4,  3,  8,  4,  3,  2,
     15, 11, 10, 9,  11, 7,  6,  5,  10, 6,  5,  4,  9,  5,  4, 3, 19, 15, 14, 13, 15, 11, 10, 9,
     14, 10, 9,  8,  13, 9,  8,  7,  12, 8,  7,  6,  8,  4,  3, 2, 7,  3,  2,  1,  6,  2,  1,  0,
     13, 9,  8,  7,  9,  5,  4,  3,  8,  4,  3,  2,  7,  3,  2, 1, 14, 10, 9,  8,  10, 6,  5,  4,
     9,  5,  4,  3,  8,  4,  3,  2,  18, 14, 13, 12, 14, 10, 9, 8, 13, 9,  8,  7,  12, 8,  7,  6,
     13, 9,  8,  7,  9,  5,  4,  3,  8,  4,  3,  2,  7,  3,  2, 1, 14, 10, 9,  8,  10, 6,  5,  4,
     9,  5,  4,  3,  8,  4,  3,  2,  15, 11, 10, 9,  11, 7,  6, 5, 10, 6,  5,  4,  9,  5,  4,  3,
     19, 15, 14, 13, 15, 11, 10, 9,  14, 10, 9,  8,  13, 9,  8, 7},
    {3, 4, 5, 9,  4, 5,  6,  10, 5, 6, 7, 11, 9,  10, 11, 15, 2, 3, 4, 8,  3, 4,  5,  9,
     4, 5, 6, 10, 8, 9,  10, 14, 3, 4, 5, 9,  4,  5,  6,  10, 5, 6, 7, 11, 9, 10, 11, 15,
     4, 5, 6, 10, 5, 6,  7,  11, 6, 7, 8, 12, 10, 11, 12, 16, 2, 3, 4, 8,  3, 4,  5,  9,
     4, 5, 6, 10, 8, 9,  10, 14, 1, 2, 3, 7,  2,  3,  4,  8,  3, 4, 5, 9,  7, 8,  9,  13,
     2, 3, 4, 8,  3, 4,  5,  9,  4, 5, 6, 10, 8,  9,  10, 14, 3, 4, 5, 9,  4, 5,  6,  10,
     5, 6, 7, 11, 9, 10, 11, 15, 1, 2, 3, 7,  2,  3,  4,  8,  3, 4, 5, 9,  7, 8,  9,  13,
     0, 1, 2, 6,  1, 2,  3,  7,  2, 3, 4, 8,  6,  7,  8,  12, 1, 2, 3, 7,  2, 3,  4,  8,
     3, 4, 5, 9,  7, 8,  9,  13, 2, 3, 4, 8,  3,  4,  5,  9,  4, 5, 6, 10, 8, 9,  10, 14,
     2, 3, 4, 8,  3, 4,  5,  9,  4, 5, 6, 10, 8,  9,  10, 14, 1, 2, 3, 7,  2, 3,  4,  8,
     3, 4, 5, 9,  7, 8,  9,  13, 2, 3, 4, 8,  3,  4,  5,  9,  4, 5, 6, 10, 8, 9,  10, 14,
     3, 4, 5, 9,  4, 5,  6,  10, 5, 6, 7, 11, 9,  10, 11, 15},
    {4, 3,  4, 5, 5, 4,  5, 6,  6,  5,  6,  7,  10, 9, 10, 11, 3, 2, 3,  4, 4,  3,  4,  5,  5, 4,
     5, 6,  9, 8, 9, 10, 4, 3,  4,  5,  5,  4,  5,  6, 6,  5,  6, 7, 10, 9, 10, 11, 5,  4,  5, 6,
     6, 5,  6, 7, 7, 6,  7, 8,  11, 10, 11, 12, 3,  2, 3,  4,  4, 3, 4,  5, 5,  4,  5,  6,  9, 8,
     9, 10, 2, 1, 2, 3,  3, 2,  3,  4,  4,  3,  4,  5, 8,  7,  8, 9, 3,  2, 3,  4,  4,  3,  4, 5,
     5, 4,  5, 6, 9, 8,  9, 10, 4,  3,  4,  5,  5,  4, 5,  6,  6, 5, 6,  7, 10, 9,  10, 11, 2, 1,
     2, 3,  3, 2, 3, 4,  4, 3,  4,  5,  8,  7,  8,  9, 1,  0,  1, 2, 2,  1, 2,  3,  3,  2,  3, 4,
     7, 6,  7, 8, 2, 1,  2, 3,  3,  2,  3,  4,  4,  3, 4,  5,  8, 7, 8,  9, 3,  2,  3,  4,  4, 3,
     4, 5,  5, 4, 5, 6,  9, 8,  9,  10, 3,  2,  3,  4, 4,  3,  4, 5, 5,  4, 5,  6,  9,  8,  9, 10,
     2, 1,  2, 3, 3, 2,  3, 4,  4,  3,  4,  5,  8,  7, 8,  9,  3, 2, 3,  4, 4,  3,  4,  5,  5, 4,
     5, 6,  9, 8, 9, 10, 4, 3,  4,  5,  5,  4,  5,  6, 6,  5,  6, 7, 10, 9, 10, 11},
    {5, 4, 3,  4, 6,  5, 4,  5, 7,  6,  5,  6,  11, 10, 9, 10, 4, 3, 2,  3,  5,  4,  3,  4,  6,  5,
     4, 5, 10, 9, 8,  9, 5,  4, 3,  4,  6,  5,  4,  5,  7, 6,  5, 6, 11, 10, 9,  10, 6,  5,  4,  5,
     7, 6, 5,  6, 8,  7, 6,  7, 12, 11, 10, 11, 4,  3,  2, 3,  5, 4, 3,  4,  6,  5,  4,  5,  10, 9,
     8, 9, 3,  2, 1,  2, 4,  3, 2,  3,  5,  4,  3,  4,  9, 8,  7, 8, 4,  3,  2,  3,  5,  4,  3,  4,
     6, 5, 4,  5, 10, 9, 8,  9, 5,  4,  3,  4,  6,  5,  4, 5,  7, 6, 5,  6,  11, 10, 9,  10, 3,  2,
     1, 2, 4,  3, 2,  3, 5,  4, 3,  4,  9,  8,  7,  8,  2, 1,  0, 1, 3,  2,  1,  2,  4,  3,  2,  3,
     8, 7, 6,  7, 3,  2, 1,  2, 4,  3,  2,  3,  5,  4,  3, 4,  9, 8, 7,  8,  4,  3,  2,  3,  5,  4,
     3, 4, 6,  5, 4,  5, 10, 9, 8,  9,  4,  3,  2,  3,  5, 4,  3, 4, 6,  5,  4,  5,  10, 9,  8,  9,
     3, 2, 1,  2, 4,  3, 2,  3, 5,  4,  3,  4,  9,  8,  7, 8,  4, 3, 2,  3,  5,  4,  3,  4,  6,  5,
     4, 5, 10, 9, 8,  9, 5,  4, 3,  4,  6,  5,  4,  5,  7, 6,  5, 6, 11, 10, 9,  10},
    {9,  5, 4, 3, 10, 6,  5,  4, 11, 7, 6, 5, 15, 11, 10, 9,  8,  4, 3, 2, 9,  5,  4,  3,
     10, 6, 5, 4, 14, 10, 9,  8, 9,  5, 4, 3, 10, 6,  5,  4,  11, 7, 6, 5, 15, 11, 10, 9,
     10, 6, 5, 4, 11, 7,  6,  5, 12, 8, 7, 6, 16, 12, 11, 10, 8,  4, 3, 2, 9,  5,  4,  3,
     10, 6, 5, 4, 14, 10, 9,  8, 7,  3, 2, 1, 8,  4,  3,  2,  9,  5, 4, 3, 13, 9,  8,  7,
     8,  4, 3, 2, 9,  5,  4,  3, 10, 6, 5, 4, 14, 10, 9,  8,  9,  5, 4, 3, 10, 6,  5,  4,
     11, 7, 6, 5, 15, 11, 10, 9, 7,  3, 2, 1, 8,  4,  3,  2,  9,  5, 4, 3, 13, 9,  8,  7,
     6,  2, 1, 0, 7,  3,  2,  1, 8,  4, 3, 2, 12, 8,  7,  6,  7,  3, 2, 1, 8,  4,  3,  2,
     9,  5, 4, 3, 13, 9,  8,  7, 8,  4, 3, 2, 9,  5,  4,  3,  10, 6, 5, 4, 14, 10, 9,  8,
     8,  4, 3, 2, 9,  5,  4,  3, 10, 6, 5, 4, 14, 10, 9,  8,  7,  3, 2, 1, 8,  4,  3,  2,
     9,  5, 4, 3, 13, 9,  8,  7, 8,  4, 3, 2, 9,  5,  4,  3,  10, 6, 5, 4, 14, 10, 9,  8,
     9,  5, 4, 3, 10, 6,  5,  4, 11, 7, 6, 5, 15, 11, 10, 9},
    {4, 5,  6, 10, 3, 4,  5, 9,  4, 5,  6, 10, 5, 6, 7, 11, 3, 4,  5, 9,  2, 3,  4, 8,  3, 4,
     5, 9,  4, 5,  6, 10, 4, 5,  6, 10, 3, 4,  5, 9, 4, 5,  6, 10, 5, 6,  7, 11, 5, 6,  7, 11,
     4, 5,  6, 10, 5, 6,  7, 11, 6, 7,  8, 12, 3, 4, 5, 9,  2, 3,  4, 8,  3, 4,  5, 9,  4, 5,
     6, 10, 2, 3,  4, 8,  1, 2,  3, 7,  2, 3,  4, 8, 3, 4,  5, 9,  3, 4,  5, 9,  2, 3,  4, 8,
     3, 4,  5, 9,  4, 5,  6, 10, 4, 5,  6, 10, 3, 4, 5, 9,  4, 5,  6, 10, 5, 6,  7, 11, 2, 3,
     4, 8,  1, 2,  3, 7,  2, 3,  4, 8,  3, 4,  5, 9, 1, 2,  3, 7,  0, 1,  2, 6,  1, 2,  3, 7,
     2, 3,  4, 8,  2, 3,  4, 8,  1, 2,  3, 7,  2, 3, 4, 8,  3, 4,  5, 9,  3, 4,  5, 9,  2, 3,
     4, 8,  3, 4,  5, 9,  4, 5,  6, 10, 3, 4,  5, 9, 2, 3,  4, 8,  3, 4,  5, 9,  4, 5,  6, 10,
     2, 3,  4, 8,  1, 2,  3, 7,  2, 3,  4, 8,  3, 4, 5, 9,  3, 4,  5, 9,  2, 3,  4, 8,  3, 4,
     5, 9,  4, 5,  6, 10, 4, 5,  6, 10, 3, 4,  5, 9, 4, 5,  6, 10, 5, 6,  7, 11},
    {5, 4, 5, 6, 4, 3, 4, 5, 5, 4, 5, 6, 6, 5, 6, 7, 4, 3, 4, 5, 3, 2, 3, 4, 4, 3, 4, 5, 5,
     4, 5, 6, 5, 4, 5, 6, 4, 3, 4, 5, 5, 4, 5, 6, 6, 5, 6, 7, 6, 5, 6, 7, 5, 4, 5, 6, 6, 5,
     6, 7, 7, 6, 7, 8, 4, 3, 4, 5, 3, 2, 3, 4, 4, 3, 4, 5, 5, 4, 5, 6, 3, 2, 3, 4, 2, 1, 2,
     3, 3, 2, 3, 4, 4, 3, 4, 5, 4, 3, 4, 5, 3, 2, 3, 4, 4, 3, 4, 5, 5, 4, 5, 6, 5, 4, 5, 6,
     4, 3, 4, 5, 5, 4, 5, 6, 6, 5, 6, 7, 3, 2, 3, 4, 2, 1, 2, 3, 3, 2, 3, 4, 4, 3, 4, 5, 2,
     1, 2, 3, 1, 0, 1, 2, 2, 1, 2, 3, 3, 2, 3, 4, 3, 2, 3, 4, 2, 1, 2, 3, 3, 2, 3, 4, 4, 3,
     4, 5, 4, 3, 4, 5, 3, 2, 3, 4, 4, 3, 4, 5, 5, 4, 5, 6, 4, 3, 4, 5, 3, 2, 3, 4, 4, 3, 4,
     5, 5, 4, 5, 6, 3, 2, 3, 4, 2, 1, 2, 3, 3, 2, 3, 4, 4, 3, 4, 5, 4, 3, 4, 5, 3, 2, 3, 4,
     4, 3, 4, 5, 5, 4, 5, 6, 5, 4, 5, 6, 4, 3, 4, 5, 5, 4, 5, 6, 6, 5, 6, 7},
    {6, 5, 4, 5, 5, 4, 3, 4, 6, 5, 4, 5, 7, 6, 5, 6, 5, 4, 3, 4, 4, 3, 2, 3, 5, 4, 3, 4, 6,
     5, 4, 5, 6, 5, 4, 5, 5, 4, 3, 4, 6, 5, 4, 5, 7, 6, 5, 6, 7, 6, 5, 6, 6, 5, 4, 5, 7, 6,
     5, 6, 8, 7, 6, 7, 5, 4, 3, 4, 4, 3, 2, 3, 5, 4, 3, 4, 6, 5, 4, 5, 4, 3, 2, 3, 3, 2, 1,
     2, 4, 3, 2, 3, 5, 4, 3, 4, 5, 4, 3, 4, 4, 3, 2, 3, 5, 4, 3, 4, 6, 5, 4, 5, 6, 5, 4, 5,
     5, 4, 3, 4, 6, 5, 4, 5, 7, 6, 5, 6, 4, 3, 2, 3, 3, 2, 1, 2, 4, 3, 2, 3, 5, 4, 3, 4, 3,
     2, 1, 2, 2, 1, 0, 1, 3, 2, 1, 2, 4, 3, 2, 3, 4, 3, 2, 3, 3, 2, 1, 2, 4, 3, 2, 3, 5, 4,
     3, 4, 5, 4, 3, 4, 4, 3, 2, 3, 5, 4, 3, 4, 6, 5, 4, 5, 5, 4, 3, 4, 4, 3, 2, 3, 5, 4, 3,
     4, 6, 5, 4, 5, 4, 3, 2, 3, 3, 2, 1, 2, 4, 3, 2, 3, 5, 4, 3, 4, 5, 4, 3, 4, 4, 3, 2, 3,
     5, 4, 3, 4, 6, 5, 4, 5, 6, 5, 4, 5, 5, 4, 3, 4, 6, 5, 4, 5, 7, 6, 5, 6},
    {10, 6, 5,  4, 9,  5, 4,  3, 10, 6, 5, 4, 11, 7, 6,  5, 9,  5, 4,  3, 8,  4, 3,  2, 9,  5,
     4,  3, 10, 6, 5,  4, 10, 6, 5,  4, 9, 5, 4,  3, 10, 6, 5,  4, 11, 7, 6,  5, 11, 7, 6,  5,
     10, 6, 5,  4, 11, 7, 6,  5, 12, 8, 7, 6, 9,  5, 4,  3, 8,  4, 3,  2, 9,  5, 4,  3, 10, 6,
     5,  4, 8,  4, 3,  2, 7,  3, 2,  1, 8, 4, 3,  2, 9,  5, 4,  3, 9,  5, 4,  3, 8,  4, 3,  2,
     9,  5, 4,  3, 10, 6, 5,  4, 10, 6, 5, 4, 9,  5, 4,  3, 10, 6, 5,  4, 11, 7, 6,  5, 8,  4,
     3,  2, 7,  3, 2,  1, 8,  4, 3,  2, 9, 5, 4,  3, 7,  3, 2,  1, 6,  2, 1,  0, 7,  3, 2,  1,
     8,  4, 3,  2, 8,  4, 3,  2, 7,  3, 2, 1, 8,  4, 3,  2, 9,  5, 4,  3, 9,  5, 4,  3, 8,  4,
     3,  2, 9,  5, 4,  3, 10, 6, 5,  4, 9, 5, 4,  3, 8,  4, 3,  2, 9,  5, 4,  3, 10, 6, 5,  4,
     8,  4, 3,  2, 7,  3, 2,  1, 8,  4, 3, 2, 9,  5, 4,  3, 9,  5, 4,  3, 8,  4, 3,  2, 9,  5,
     4,  3, 10, 6, 5,  4, 10, 6, 5,  4, 9, 5, 4,  3, 10, 6, 5,  4, 11, 7, 6,  5},
    {5, 6, 7, 11, 4, 5, 6, 10, 3, 4,  5, 9,  4, 5,  6, 10, 4, 5, 6, 10, 3, 4,  5, 9,  2, 3,
     4, 8, 3, 4,  5, 9, 5, 6,  7, 11, 4, 5,  6, 10, 3, 4,  5, 9, 4, 5,  6, 10, 6, 7,  8, 12,
     5, 6, 7, 11, 4, 5, 6, 10, 5, 6,  7, 11, 4, 5,  6, 10, 3, 4, 5, 9,  2, 3,  4, 8,  3, 4,
     5, 9, 3, 4,  5, 9, 2, 3,  4, 8,  1, 2,  3, 7,  2, 3,  4, 8, 4, 5,  6, 10, 3, 4,  5, 9,
     2, 3, 4, 8,  3, 4, 5, 9,  5, 6,  7, 11, 4, 5,  6, 10, 3, 4, 5, 9,  4, 5,  6, 10, 3, 4,
     5, 9, 2, 3,  4, 8, 1, 2,  3, 7,  2, 3,  4, 8,  2, 3,  4, 8, 1, 2,  3, 7,  0, 1,  2, 6,
     1, 2, 3, 7,  3, 4, 5, 9,  2, 3,  4, 8,  1, 2,  3, 7,  2, 3, 4, 8,  4, 5,  6, 10, 3, 4,
     5, 9, 2, 3,  4, 8, 3, 4,  5, 9,  4, 5,  6, 10, 3, 4,  5, 9, 2, 3,  4, 8,  3, 4,  5, 9,
     3, 4, 5, 9,  2, 3, 4, 8,  1, 2,  3, 7,  2, 3,  4, 8,  4, 5, 6, 10, 3, 4,  5, 9,  2, 3,
     4, 8, 3, 4,  5, 9, 5, 6,  7, 11, 4, 5,  6, 10, 3, 4,  5, 9, 4, 5,  6, 10},
    {6, 5, 6, 7, 5, 4, 5, 6, 4, 3, 4, 5, 5, 4, 5, 6, 5, 4, 5, 6, 4, 3, 4, 5, 3, 2, 3, 4, 4,
     3, 4, 5, 6, 5, 6, 7, 5, 4, 5, 6, 4, 3, 4, 5, 5, 4, 5, 6, 7, 6, 7, 8, 6, 5, 6, 7, 5, 4,
     5, 6, 6, 5, 6, 7, 5, 4, 5, 6, 4, 3, 4, 5, 3, 2, 3, 4, 4, 3, 4, 5, 4, 3, 4, 5, 3, 2, 3,
     4, 2, 1, 2, 3, 3, 2, 3, 4, 5, 4, 5, 6, 4, 3, 4, 5, 3, 2, 3, 4, 4, 3, 4, 5, 6, 5, 6, 7,
     5, 4, 5, 6, 4, 3, 4, 5, 5, 4, 5, 6, 4, 3, 4, 5, 3, 2, 3, 4, 2, 1, 2, 3, 3, 2, 3, 4, 3,
     2, 3, 4, 2, 1, 2, 3, 1, 0, 1, 2, 2, 1, 2, 3, 4, 3, 4, 5, 3, 2, 3, 4, 2, 1, 2, 3, 3, 2,
     3, 4, 5, 4, 5, 6, 4, 3, 4, 5, 3, 2, 3, 4, 4, 3, 4, 5, 5, 4, 5, 6, 4, 3, 4, 5, 3, 2, 3,
     4, 4, 3, 4, 5, 4, 3, 4, 5, 3, 2, 3, 4, 2, 1, 2, 3, 3, 2, 3, 4, 5, 4, 5, 6, 4, 3, 4, 5,
     3, 2, 3, 4, 4, 3, 4, 5, 6, 5, 6, 7, 5, 4, 5, 6, 4, 3, 4, 5, 5, 4, 5, 6},
    {7, 6, 5, 6, 6, 5, 4, 5, 5, 4, 3, 4, 6, 5, 4, 5, 6, 5, 4, 5, 5, 4, 3, 4, 4, 3, 2, 3, 5,
     4, 3, 4, 7, 6, 5, 6, 6, 5, 4, 5, 5, 4, 3, 4, 6, 5, 4, 5, 8, 7, 6, 7, 7, 6, 5, 6, 6, 5,
     4, 5, 7, 6, 5, 6, 6, 5, 4, 5, 5, 4, 3, 4, 4, 3, 2, 3, 5, 4, 3, 4, 5, 4, 3, 4, 4, 3, 2,
     3, 3, 2, 1, 2, 4, 3, 2, 3, 6, 5, 4, 5, 5, 4, 3, 4, 4, 3, 2, 3, 5, 4, 3, 4, 7, 6, 5, 6,
     6, 5, 4, 5, 5, 4, 3, 4, 6, 5, 4, 5, 5, 4, 3, 4, 4, 3, 2, 3, 3, 2, 1, 2, 4, 3, 2, 3, 4,
     3, 2, 3, 3, 2, 1, 2, 2, 1, 0, 1, 3, 2, 1, 2, 5, 4, 3, 4, 4, 3, 2, 3, 3, 2, 1, 2, 4, 3,
     2, 3, 6, 5, 4, 5, 5, 4, 3, 4, 4, 3, 2, 3, 5, 4, 3, 4, 6, 5, 4, 5, 5, 4, 3, 4, 4, 3, 2,
     3, 5, 4, 3, 4, 5, 4, 3, 4, 4, 3, 2, 3, 3, 2, 1, 2, 4, 3, 2, 3, 6, 5, 4, 5, 5, 4, 3, 4,
     4, 3, 2, 3, 5, 4, 3, 4, 7, 6, 5, 6, 6, 5, 4, 5, 5, 4, 3, 4, 6, 5, 4, 5},
    {11, 7, 6, 5, 10, 6, 5,  4, 9,  5, 4,  3, 10, 6, 5, 4, 10, 6, 5,  4, 9,  5, 4,  3, 8, 4,
     3,  2, 9, 5, 4,  3, 11, 7, 6,  5, 10, 6, 5,  4, 9, 5, 4,  3, 10, 6, 5,  4, 12, 8, 7, 6,
     11, 7, 6, 5, 10, 6, 5,  4, 11, 7, 6,  5, 10, 6, 5, 4, 9,  5, 4,  3, 8,  4, 3,  2, 9, 5,
     4,  3, 9, 5, 4,  3, 8,  4, 3,  2, 7,  3, 2,  1, 8, 4, 3,  2, 10, 6, 5,  4, 9,  5, 4, 3,
     8,  4, 3, 2, 9,  5, 4,  3, 11, 7, 6,  5, 10, 6, 5, 4, 9,  5, 4,  3, 10, 6, 5,  4, 9, 5,
     4,  3, 8, 4, 3,  2, 7,  3, 2,  1, 8,  4, 3,  2, 8, 4, 3,  2, 7,  3, 2,  1, 6,  2, 1, 0,
     7,  3, 2, 1, 9,  5, 4,  3, 8,  4, 3,  2, 7,  3, 2, 1, 8,  4, 3,  2, 10, 6, 5,  4, 9, 5,
     4,  3, 8, 4, 3,  2, 9,  5, 4,  3, 10, 6, 5,  4, 9, 5, 4,  3, 8,  4, 3,  2, 9,  5, 4, 3,
     9,  5, 4, 3, 8,  4, 3,  2, 7,  3, 2,  1, 8,  4, 3, 2, 10, 6, 5,  4, 9,  5, 4,  3, 8, 4,
     3,  2, 9, 5, 4,  3, 11, 7, 6,  5, 10, 6, 5,  4, 9, 5, 4,  3, 10, 6, 5,  4},
    {9,  10, 11, 15, 5, 6, 7, 11, 4, 5,  6,  10, 3, 4, 5, 9,  8, 9,  10, 14, 4, 5, 6, 10,
     3,  4,  5,  9,  2, 3, 4, 8,  9, 10, 11, 15, 5, 6, 7, 11, 4, 5,  6,  10, 3, 4, 5, 9,
     10, 11, 12, 16, 6, 7, 8, 12, 5, 6,  7,  11, 4, 5, 6, 10, 8, 9,  10, 14, 4, 5, 6, 10,
     3,  4,  5,  9,  2, 3, 4, 8,  7, 8,  9,  13, 3, 4, 5, 9,  2, 3,  4,  8,  1, 2, 3, 7,
     8,  9,  10, 14, 4, 5, 6, 10, 3, 4,  5,  9,  2, 3, 4, 8,  9, 10, 11, 15, 5, 6, 7, 11,
     4,  5,  6,  10, 3, 4, 5, 9,  7, 8,  9,  13, 3, 4, 5, 9,  2, 3,  4,  8,  1, 2, 3, 7,
     6,  7,  8,  12, 2, 3, 4, 8,  1, 2,  3,  7,  0, 1, 2, 6,  7, 8,  9,  13, 3, 4, 5, 9,
     2,  3,  4,  8,  1, 2, 3, 7,  8, 9,  10, 14, 4, 5, 6, 10, 3, 4,  5,  9,  2, 3, 4, 8,
     8,  9,  10, 14, 4, 5, 6, 10, 3, 4,  5,  9,  2, 3, 4, 8,  7, 8,  9,  13, 3, 4, 5, 9,
     2,  3,  4,  8,  1, 2, 3, 7,  8, 9,  10, 14, 4, 5, 6, 10, 3, 4,  5,  9,  2, 3, 4, 8,
     9,  10, 11, 15, 5, 6, 7, 11, 4, 5,  6,  10, 3, 4, 5, 9},
    {10, 9, 10, 11, 6, 5, 6,  7, 5,  4,  5,  6,  4, 3,  4, 5,  9, 8, 9, 10, 5, 4,  5,  6,  4,  3,
     4,  5, 3,  2,  3, 4, 10, 9, 10, 11, 6,  5,  6, 7,  5, 4,  5, 6, 4, 3,  4, 5,  11, 10, 11, 12,
     7,  6, 7,  8,  6, 5, 6,  7, 5,  4,  5,  6,  9, 8,  9, 10, 5, 4, 5, 6,  4, 3,  4,  5,  3,  2,
     3,  4, 8,  7,  8, 9, 4,  3, 4,  5,  3,  2,  3, 4,  2, 1,  2, 3, 9, 8,  9, 10, 5,  4,  5,  6,
     4,  3, 4,  5,  3, 2, 3,  4, 10, 9,  10, 11, 6, 5,  6, 7,  5, 4, 5, 6,  4, 3,  4,  5,  8,  7,
     8,  9, 4,  3,  4, 5, 3,  2, 3,  4,  2,  1,  2, 3,  7, 6,  7, 8, 3, 2,  3, 4,  2,  1,  2,  3,
     1,  0, 1,  2,  8, 7, 8,  9, 4,  3,  4,  5,  3, 2,  3, 4,  2, 1, 2, 3,  9, 8,  9,  10, 5,  4,
     5,  6, 4,  3,  4, 5, 3,  2, 3,  4,  9,  8,  9, 10, 5, 4,  5, 6, 4, 3,  4, 5,  3,  2,  3,  4,
     8,  7, 8,  9,  4, 3, 4,  5, 3,  2,  3,  4,  2, 1,  2, 3,  9, 8, 9, 10, 5, 4,  5,  6,  4,  3,
     4,  5, 3,  2,  3, 4, 10, 9, 10, 11, 6,  5,  6, 7,  5, 4,  5, 6, 4, 3,  4, 5},
    {11, 10, 9, 10, 7, 6, 5,  6,  6,  5,  4,  5,  5,  4, 3, 4, 10, 9, 8,  9, 6,  5, 4,  5,  5,  4,
     3,  4,  4, 3,  2, 3, 11, 10, 9,  10, 7,  6,  5,  6, 6, 5, 4,  5, 5,  4, 3,  4, 12, 11, 10, 11,
     8,  7,  6, 7,  7, 6, 5,  6,  6,  5,  4,  5,  10, 9, 8, 9, 6,  5, 4,  5, 5,  4, 3,  4,  4,  3,
     2,  3,  9, 8,  7, 8, 5,  4,  3,  4,  4,  3,  2,  3, 3, 2, 1,  2, 10, 9, 8,  9, 6,  5,  4,  5,
     5,  4,  3, 4,  4, 3, 2,  3,  11, 10, 9,  10, 7,  6, 5, 6, 6,  5, 4,  5, 5,  4, 3,  4,  9,  8,
     7,  8,  5, 4,  3, 4, 4,  3,  2,  3,  3,  2,  1,  2, 8, 7, 6,  7, 4,  3, 2,  3, 3,  2,  1,  2,
     2,  1,  0, 1,  9, 8, 7,  8,  5,  4,  3,  4,  4,  3, 2, 3, 3,  2, 1,  2, 10, 9, 8,  9,  6,  5,
     4,  5,  5, 4,  3, 4, 4,  3,  2,  3,  10, 9,  8,  9, 6, 5, 4,  5, 5,  4, 3,  4, 4,  3,  2,  3,
     9,  8,  7, 8,  5, 4, 3,  4,  4,  3,  2,  3,  3,  2, 1, 2, 10, 9, 8,  9, 6,  5, 4,  5,  5,  4,
     3,  4,  4, 3,  2, 3, 11, 10, 9,  10, 7,  6,  5,  6, 6, 5, 4,  5, 5,  4, 3,  4},
    {15, 11, 10, 9,  11, 7, 6, 5, 10, 6,  5,  4, 9,  5, 4, 3, 14, 10, 9,  8, 10, 6, 5, 4,
     9,  5,  4,  3,  8,  4, 3, 2, 15, 11, 10, 9, 11, 7, 6, 5, 10, 6,  5,  4, 9,  5, 4, 3,
     16, 12, 11, 10, 12, 8, 7, 6, 11, 7,  6,  5, 10, 6, 5, 4, 14, 10, 9,  8, 10, 6, 5, 4,
     9,  5,  4,  3,  8,  4, 3, 2, 13, 9,  8,  7, 9,  5, 4, 3, 8,  4,  3,  2, 7,  3, 2, 1,
     14, 10, 9,  8,  10, 6, 5, 4, 9,  5,  4,  3, 8,  4, 3, 2, 15, 11, 10, 9, 11, 7, 6, 5,
     10, 6,  5,  4,  9,  5, 4, 3, 13, 9,  8,  7, 9,  5, 4, 3, 8,  4,  3,  2, 7,  3, 2, 1,
     12, 8,  7,  6,  8,  4, 3, 2, 7,  3,  2,  1, 6,  2, 1, 0, 13, 9,  8,  7, 9,  5, 4, 3,
     8,  4,  3,  2,  7,  3, 2, 1, 14, 10, 9,  8, 10, 6, 5, 4, 9,  5,  4,  3, 8,  4, 3, 2,
     14, 10, 9,  8,  10, 6, 5, 4, 9,  5,  4,  3, 8,  4, 3, 2, 13, 9,  8,  7, 9,  5, 4, 3,
     8,  4,  3,  2,  7,  3, 2, 1, 14, 10, 9,  8, 10, 6, 5, 4, 9,  5,  4,  3, 8,  4, 3, 2,
     15, 11, 10, 9,  11, 7, 6, 5, 10, 6,  5,  4, 9,  5, 4, 3},
    {4, 5, 6, 10, 5, 6,  7,  11, 6, 7, 8, 12, 10, 11, 12, 16, 3, 4, 5, 9,  4, 5, 6,  10,
     5, 6, 7, 11, 9, 10, 11, 15, 2, 3, 4, 8,  3,  4,  5,  9,  4, 5, 6, 10, 8, 9, 10, 14,
     3, 4, 5, 9,  4, 5,  6,  10, 5, 6, 7, 11, 9,  10, 11, 15, 3, 4, 5, 9,  4, 5, 6,  10,
     5, 6, 7, 11, 9, 10, 11, 15, 2, 3, 4, 8,  3,  4,  5,  9,  4, 5, 6, 10, 8, 9, 10, 14,
     1, 2, 3, 7,  2, 3,  4,  8,  3, 4, 5, 9,  7,  8,  9,  13, 2, 3, 4, 8,  3, 4, 5,  9,
     4, 5, 6, 10, 8, 9,  10, 14, 2, 3, 4, 8,  3,  4,  5,  9,  4, 5, 6, 10, 8, 9, 10, 14,
     1, 2, 3, 7,  2, 3,  4,  8,  3, 4, 5, 9,  7,  8,  9,  13, 0, 1, 2, 6,  1, 2, 3,  7,
     2, 3, 4, 8,  6, 7,  8,  12, 1, 2, 3, 7,  2,  3,  4,  8,  3, 4, 5, 9,  7, 8, 9,  13,
     3, 4, 5, 9,  4, 5,  6,  10, 5, 6, 7, 11, 9,  10, 11, 15, 2, 3, 4, 8,  3, 4, 5,  9,
     4, 5, 6, 10, 8, 9,  10, 14, 1, 2, 3, 7,  2,  3,  4,  8,  3, 4, 5, 9,  7, 8, 9,  13,
     2, 3, 4, 8,  3, 4,  5,  9,  4, 5, 6, 10, 8,  9,  10, 14},
    {5,  4,  5,  6, 6,  5,  6, 7, 7,  6, 7,  8,  11, 10, 11, 12, 4, 3,  4, 5, 5, 4,  5,  6,  6,  5,
     6,  7,  10, 9, 10, 11, 3, 2, 3,  4, 4,  3,  4,  5,  5,  4,  5, 6,  9, 8, 9, 10, 4,  3,  4,  5,
     5,  4,  5,  6, 6,  5,  6, 7, 10, 9, 10, 11, 4,  3,  4,  5,  5, 4,  5, 6, 6, 5,  6,  7,  10, 9,
     10, 11, 3,  2, 3,  4,  4, 3, 4,  5, 5,  4,  5,  6,  9,  8,  9, 10, 2, 1, 2, 3,  3,  2,  3,  4,
     4,  3,  4,  5, 8,  7,  8, 9, 3,  2, 3,  4,  4,  3,  4,  5,  5, 4,  5, 6, 9, 8,  9,  10, 3,  2,
     3,  4,  4,  3, 4,  5,  5, 4, 5,  6, 9,  8,  9,  10, 2,  1,  2, 3,  3, 2, 3, 4,  4,  3,  4,  5,
     8,  7,  8,  9, 1,  0,  1, 2, 2,  1, 2,  3,  3,  2,  3,  4,  7, 6,  7, 8, 2, 1,  2,  3,  3,  2,
     3,  4,  4,  3, 4,  5,  8, 7, 8,  9, 4,  3,  4,  5,  5,  4,  5, 6,  6, 5, 6, 7,  10, 9,  10, 11,
     3,  2,  3,  4, 4,  3,  4, 5, 5,  4, 5,  6,  9,  8,  9,  10, 2, 1,  2, 3, 3, 2,  3,  4,  4,  3,
     4,  5,  8,  7, 8,  9,  3, 2, 3,  4, 4,  3,  4,  5,  5,  4,  5, 6,  9, 8, 9, 10},
    {6, 5,  4,  5,  7, 6,  5, 6, 8,  7,  6,  7,  12, 11, 10, 11, 5, 4, 3,  4, 6,  5, 4,  5,  7,  6,
     5, 6,  11, 10, 9, 10, 4, 3, 2,  3,  5,  4,  3,  4,  6,  5,  4, 5, 10, 9, 8,  9, 5,  4,  3,  4,
     6, 5,  4,  5,  7, 6,  5, 6, 11, 10, 9,  10, 5,  4,  3,  4,  6, 5, 4,  5, 7,  6, 5,  6,  11, 10,
     9, 10, 4,  3,  2, 3,  5, 4, 3,  4,  6,  5,  4,  5,  10, 9,  8, 9, 3,  2, 1,  2, 4,  3,  2,  3,
     5, 4,  3,  4,  9, 8,  7, 8, 4,  3,  2,  3,  5,  4,  3,  4,  6, 5, 4,  5, 10, 9, 8,  9,  4,  3,
     2, 3,  5,  4,  3, 4,  6, 5, 4,  5,  10, 9,  8,  9,  3,  2,  1, 2, 4,  3, 2,  3, 5,  4,  3,  4,
     9, 8,  7,  8,  2, 1,  0, 1, 3,  2,  1,  2,  4,  3,  2,  3,  8, 7, 6,  7, 3,  2, 1,  2,  4,  3,
     2, 3,  5,  4,  3, 4,  9, 8, 7,  8,  5,  4,  3,  4,  6,  5,  4, 5, 7,  6, 5,  6, 11, 10, 9,  10,
     4, 3,  2,  3,  5, 4,  3, 4, 6,  5,  4,  5,  10, 9,  8,  9,  3, 2, 1,  2, 4,  3, 2,  3,  5,  4,
     3, 4,  9,  8,  7, 8,  4, 3, 2,  3,  5,  4,  3,  4,  6,  5,  4, 5, 10, 9, 8,  9},
    {10, 6, 5, 4, 11, 7,  6,  5, 12, 8, 7, 6, 16, 12, 11, 10, 9,  5, 4, 3, 10, 6,  5, 4,
     11, 7, 6, 5, 15, 11, 10, 9, 8,  4, 3, 2, 9,  5,  4,  3,  10, 6, 5, 4, 14, 10, 9, 8,
     9,  5, 4, 3, 10, 6,  5,  4, 11, 7, 6, 5, 15, 11, 10, 9,  9,  5, 4, 3, 10, 6,  5, 4,
     11, 7, 6, 5, 15, 11, 10, 9, 8,  4, 3, 2, 9,  5,  4,  3,  10, 6, 5, 4, 14, 10, 9, 8,
     7,  3, 2, 1, 8,  4,  3,  2, 9,  5, 4, 3, 13, 9,  8,  7,  8,  4, 3, 2, 9,  5,  4, 3,
     10, 6, 5, 4, 14, 10, 9,  8, 8,  4, 3, 2, 9,  5,  4,  3,  10, 6, 5, 4, 14, 10, 9, 8,
     7,  3, 2, 1, 8,  4,  3,  2, 9,  5, 4, 3, 13, 9,  8,  7,  6,  2, 1, 0, 7,  3,  2, 1,
     8,  4, 3, 2, 12, 8,  7,  6, 7,  3, 2, 1, 8,  4,  3,  2,  9,  5, 4, 3, 13, 9,  8, 7,
     9,  5, 4, 3, 10, 6,  5,  4, 11, 7, 6, 5, 15, 11, 10, 9,  8,  4, 3, 2, 9,  5,  4, 3,
     10, 6, 5, 4, 14, 10, 9,  8, 7,  3, 2, 1, 8,  4,  3,  2,  9,  5, 4, 3, 13, 9,  8, 7,
     8,  4, 3, 2, 9,  5,  4,  3, 10, 6, 5, 4, 14, 10, 9,  8},
    {5, 6,  7, 11, 4, 5,  6, 10, 5, 6, 7, 11, 6, 7,  8, 12, 4, 5,  6, 10, 3, 4,  5, 9,  4, 5,
     6, 10, 5, 6,  7, 11, 3, 4,  5, 9, 2, 3,  4, 8,  3, 4,  5, 9,  4, 5,  6, 10, 4, 5,  6, 10,
     3, 4,  5, 9,  4, 5,  6, 10, 5, 6, 7, 11, 4, 5,  6, 10, 3, 4,  5, 9,  4, 5,  6, 10, 5, 6,
     7, 11, 3, 4,  5, 9,  2, 3,  4, 8, 3, 4,  5, 9,  4, 5,  6, 10, 2, 3,  4, 8,  1, 2,  3, 7,
     2, 3,  4, 8,  3, 4,  5, 9,  3, 4, 5, 9,  2, 3,  4, 8,  3, 4,  5, 9,  4, 5,  6, 10, 3, 4,
     5, 9,  2, 3,  4, 8,  3, 4,  5, 9, 4, 5,  6, 10, 2, 3,  4, 8,  1, 2,  3, 7,  2, 3,  4, 8,
     3, 4,  5, 9,  1, 2,  3, 7,  0, 1, 2, 6,  1, 2,  3, 7,  2, 3,  4, 8,  2, 3,  4, 8,  1, 2,
     3, 7,  2, 3,  4, 8,  3, 4,  5, 9, 4, 5,  6, 10, 3, 4,  5, 9,  4, 5,  6, 10, 5, 6,  7, 11,
     3, 4,  5, 9,  2, 3,  4, 8,  3, 4, 5, 9,  4, 5,  6, 10, 2, 3,  4, 8,  1, 2,  3, 7,  2, 3,
     4, 8,  3, 4,  5, 9,  3, 4,  5, 9, 2, 3,  4, 8,  3, 4,  5, 9,  4, 5,  6, 10},
    {6, 5, 6, 7, 5, 4, 5, 6, 6, 5, 6, 7, 7, 6, 7, 8, 5, 4, 5, 6, 4, 3, 4, 5, 5, 4, 5, 6, 6,
     5, 6, 7, 4, 3, 4, 5, 3, 2, 3, 4, 4, 3, 4, 5, 5, 4, 5, 6, 5, 4, 5, 6, 4, 3, 4, 5, 5, 4,
     5, 6, 6, 5, 6, 7, 5, 4, 5, 6, 4, 3, 4, 5, 5, 4, 5, 6, 6, 5, 6, 7, 4, 3, 4, 5, 3, 2, 3,
     4, 4, 3, 4, 5, 5, 4, 5, 6, 3, 2, 3, 4, 2, 1, 2, 3, 3, 2, 3, 4, 4, 3, 4, 5, 4, 3, 4, 5,
     3, 2, 3, 4, 4, 3, 4, 5, 5, 4, 5, 6, 4, 3, 4, 5, 3, 2, 3, 4, 4, 3, 4, 5, 5, 4, 5, 6, 3,
     2, 3, 4, 2, 1, 2, 3, 3, 2, 3, 4, 4, 3, 4, 5, 2, 1, 2, 3, 1, 0, 1, 2, 2, 1, 2, 3, 3, 2,
     3, 4, 3, 2, 3, 4, 2, 1, 2, 3, 3, 2, 3, 4, 4, 3, 4, 5, 5, 4, 5, 6, 4, 3, 4, 5, 5, 4, 5,
     6, 6, 5, 6, 7, 4, 3, 4, 5, 3, 2, 3, 4, 4, 3, 4, 5, 5, 4, 5, 6, 3, 2, 3, 4, 2, 1, 2, 3,
     3, 2, 3, 4, 4, 3, 4, 5, 4, 3, 4, 5, 3, 2, 3, 4, 4, 3, 4, 5, 5, 4, 5, 6},
    {7, 6, 5, 6, 6, 5, 4, 5, 7, 6, 5, 6, 8, 7, 6, 7, 6, 5, 4, 5, 5, 4, 3, 4, 6, 5, 4, 5, 7,
     6, 5, 6, 5, 4, 3, 4, 4, 3, 2, 3, 5, 4, 3, 4, 6, 5, 4, 5, 6, 5, 4, 5, 5, 4, 3, 4, 6, 5,
     4, 5, 7, 6, 5, 6, 6, 5, 4, 5, 5, 4, 3, 4, 6, 5, 4, 5, 7, 6, 5, 6, 5, 4, 3, 4, 4, 3, 2,
     3, 5, 4, 3, 4, 6, 5, 4, 5, 4, 3, 2, 3, 3, 2, 1, 2, 4, 3, 2, 3, 5, 4, 3, 4, 5, 4, 3, 4,
     4, 3, 2, 3, 5, 4, 3, 4, 6, 5, 4, 5, 5, 4, 3, 4, 4, 3, 2, 3, 5, 4, 3, 4, 6, 5, 4, 5, 4,
     3, 2, 3, 3, 2, 1, 2, 4, 3, 2, 3, 5, 4, 3, 4, 3, 2, 1, 2, 2, 1, 0, 1, 3, 2, 1, 2, 4, 3,
     2, 3, 4, 3, 2, 3, 3, 2, 1, 2, 4, 3, 2, 3, 5, 4, 3, 4, 6, 5, 4, 5, 5, 4, 3, 4, 6, 5, 4,
     5, 7, 6, 5, 6, 5, 4, 3, 4, 4, 3, 2, 3, 5, 4, 3, 4, 6, 5, 4, 5, 4, 3, 2, 3, 3, 2, 1, 2,
     4, 3, 2, 3, 5, 4, 3, 4, 5, 4, 3, 4, 4, 3, 2, 3, 5, 4, 3, 4, 6, 5, 4, 5},
    {11, 7, 6,  5, 10, 6, 5, 4, 11, 7, 6,  5, 12, 8, 7,  6, 10, 6, 5,  4, 9,  5, 4,  3, 10, 6,
     5,  4, 11, 7, 6,  5, 9, 5, 4,  3, 8,  4, 3,  2, 9,  5, 4,  3, 10, 6, 5,  4, 10, 6, 5,  4,
     9,  5, 4,  3, 10, 6, 5, 4, 11, 7, 6,  5, 10, 6, 5,  4, 9,  5, 4,  3, 10, 6, 5,  4, 11, 7,
     6,  5, 9,  5, 4,  3, 8, 4, 3,  2, 9,  5, 4,  3, 10, 6, 5,  4, 8,  4, 3,  2, 7,  3, 2,  1,
     8,  4, 3,  2, 9,  5, 4, 3, 9,  5, 4,  3, 8,  4, 3,  2, 9,  5, 4,  3, 10, 6, 5,  4, 9,  5,
     4,  3, 8,  4, 3,  2, 9, 5, 4,  3, 10, 6, 5,  4, 8,  4, 3,  2, 7,  3, 2,  1, 8,  4, 3,  2,
     9,  5, 4,  3, 7,  3, 2, 1, 6,  2, 1,  0, 7,  3, 2,  1, 8,  4, 3,  2, 8,  4, 3,  2, 7,  3,
     2,  1, 8,  4, 3,  2, 9, 5, 4,  3, 10, 6, 5,  4, 9,  5, 4,  3, 10, 6, 5,  4, 11, 7, 6,  5,
     9,  5, 4,  3, 8,  4, 3, 2, 9,  5, 4,  3, 10, 6, 5,  4, 8,  4, 3,  2, 7,  3, 2,  1, 8,  4,
     3,  2, 9,  5, 4,  3, 9, 5, 4,  3, 8,  4, 3,  2, 9,  5, 4,  3, 10, 6, 5,  4},
    {6, 7,  8, 12, 5, 6,  7, 11, 4, 5,  6, 10, 5, 6,  7, 11, 5, 6,  7, 11, 4, 5, 6, 10, 3, 4,
     5, 9,  4, 5,  6, 10, 4, 5,  6, 10, 3, 4,  5, 9,  2, 3,  4, 8,  3, 4,  5, 9, 5, 6,  7, 11,
     4, 5,  6, 10, 3, 4,  5, 9,  4, 5,  6, 10, 5, 6,  7, 11, 4, 5,  6, 10, 3, 4, 5, 9,  4, 5,
     6, 10, 4, 5,  6, 10, 3, 4,  5, 9,  2, 3,  4, 8,  3, 4,  5, 9,  3, 4,  5, 9, 2, 3,  4, 8,
     1, 2,  3, 7,  2, 3,  4, 8,  4, 5,  6, 10, 3, 4,  5, 9,  2, 3,  4, 8,  3, 4, 5, 9,  4, 5,
     6, 10, 3, 4,  5, 9,  2, 3,  4, 8,  3, 4,  5, 9,  3, 4,  5, 9,  2, 3,  4, 8, 1, 2,  3, 7,
     2, 3,  4, 8,  2, 3,  4, 8,  1, 2,  3, 7,  0, 1,  2, 6,  1, 2,  3, 7,  3, 4, 5, 9,  2, 3,
     4, 8,  1, 2,  3, 7,  2, 3,  4, 8,  5, 6,  7, 11, 4, 5,  6, 10, 3, 4,  5, 9, 4, 5,  6, 10,
     4, 5,  6, 10, 3, 4,  5, 9,  2, 3,  4, 8,  3, 4,  5, 9,  3, 4,  5, 9,  2, 3, 4, 8,  1, 2,
     3, 7,  2, 3,  4, 8,  4, 5,  6, 10, 3, 4,  5, 9,  2, 3,  4, 8,  3, 4,  5, 9},
    {7, 6, 7, 8, 6, 5, 6, 7, 5, 4, 5, 6, 6, 5, 6, 7, 6, 5, 6, 7, 5, 4, 5, 6, 4, 3, 4, 5, 5,
     4, 5, 6, 5, 4, 5, 6, 4, 3, 4, 5, 3, 2, 3, 4, 4, 3, 4, 5, 6, 5, 6, 7, 5, 4, 5, 6, 4, 3,
     4, 5, 5, 4, 5, 6, 6, 5, 6, 7, 5, 4, 5, 6, 4, 3, 4, 5, 5, 4, 5, 6, 5, 4, 5, 6, 4, 3, 4,
     5, 3, 2, 3, 4, 4, 3, 4, 5, 4, 3, 4, 5, 3, 2, 3, 4, 2, 1, 2, 3, 3, 2, 3, 4, 5, 4, 5, 6,
     4, 3, 4, 5, 3, 2, 3, 4, 4, 3, 4, 5, 5, 4, 5, 6, 4, 3, 4, 5, 3, 2, 3, 4, 4, 3, 4, 5, 4,
     3, 4, 5, 3, 2, 3, 4, 2, 1, 2, 3, 3, 2, 3, 4, 3, 2, 3, 4, 2, 1, 2, 3, 1, 0, 1, 2, 2, 1,
     2, 3, 4, 3, 4, 5, 3, 2, 3, 4, 2, 1, 2, 3, 3, 2, 3, 4, 6, 5, 6, 7, 5, 4, 5, 6, 4, 3, 4,
     5, 5, 4, 5, 6, 5, 4, 5, 6, 4, 3, 4, 5, 3, 2, 3, 4, 4, 3, 4, 5, 4, 3, 4, 5, 3, 2, 3, 4,
     2, 1, 2, 3, 3, 2, 3, 4, 5, 4, 5, 6, 4, 3, 4, 5, 3, 2, 3, 4, 4, 3, 4, 5},
    {8, 7, 6, 7, 7, 6, 5, 6, 6, 5, 4, 5, 7, 6, 5, 6, 7, 6, 5, 6, 6, 5, 4, 5, 5, 4, 3, 4, 6,
     5, 4, 5, 6, 5, 4, 5, 5, 4, 3, 4, 4, 3, 2, 3, 5, 4, 3, 4, 7, 6, 5, 6, 6, 5, 4, 5, 5, 4,
     3, 4, 6, 5, 4, 5, 7, 6, 5, 6, 6, 5, 4, 5, 5, 4, 3, 4, 6, 5, 4, 5, 6, 5, 4, 5, 5, 4, 3,
     4, 4, 3, 2, 3, 5, 4, 3, 4, 5, 4, 3, 4, 4, 3, 2, 3, 3, 2, 1, 2, 4, 3, 2, 3, 6, 5, 4, 5,
     5, 4, 3, 4, 4, 3, 2, 3, 5, 4, 3, 4, 6, 5, 4, 5, 5, 4, 3, 4, 4, 3, 2, 3, 5, 4, 3, 4, 5,
     4, 3, 4, 4, 3, 2, 3, 3, 2, 1, 2, 4, 3, 2, 3, 4, 3, 2, 3, 3, 2, 1, 2, 2, 1, 0, 1, 3, 2,
     1, 2, 5, 4, 3, 4, 4, 3, 2, 3, 3, 2, 1, 2, 4, 3, 2, 3, 7, 6, 5, 6, 6, 5, 4, 5, 5, 4, 3,
     4, 6, 5, 4, 5, 6, 5, 4, 5, 5, 4, 3, 4, 4, 3, 2, 3, 5, 4, 3, 4, 5, 4, 3, 4, 4, 3, 2, 3,
     3, 2, 1, 2, 4, 3, 2, 3, 6, 5, 4, 5, 5, 4, 3, 4, 4, 3, 2, 3, 5, 4, 3, 4},
    {12, 8, 7,  6, 11, 7, 6,  5, 10, 6, 5,  4, 11, 7, 6,  5, 11, 7, 6, 5, 10, 6, 5,  4, 9,  5,
     4,  3, 10, 6, 5,  4, 10, 6, 5,  4, 9,  5, 4,  3, 8,  4, 3,  2, 9, 5, 4,  3, 11, 7, 6,  5,
     10, 6, 5,  4, 9,  5, 4,  3, 10, 6, 5,  4, 11, 7, 6,  5, 10, 6, 5, 4, 9,  5, 4,  3, 10, 6,
     5,  4, 10, 6, 5,  4, 9,  5, 4,  3, 8,  4, 3,  2, 9,  5, 4,  3, 9, 5, 4,  3, 8,  4, 3,  2,
     7,  3, 2,  1, 8,  4, 3,  2, 10, 6, 5,  4, 9,  5, 4,  3, 8,  4, 3, 2, 9,  5, 4,  3, 10, 6,
     5,  4, 9,  5, 4,  3, 8,  4, 3,  2, 9,  5, 4,  3, 9,  5, 4,  3, 8, 4, 3,  2, 7,  3, 2,  1,
     8,  4, 3,  2, 8,  4, 3,  2, 7,  3, 2,  1, 6,  2, 1,  0, 7,  3, 2, 1, 9,  5, 4,  3, 8,  4,
     3,  2, 7,  3, 2,  1, 8,  4, 3,  2, 11, 7, 6,  5, 10, 6, 5,  4, 9, 5, 4,  3, 10, 6, 5,  4,
     10, 6, 5,  4, 9,  5, 4,  3, 8,  4, 3,  2, 9,  5, 4,  3, 9,  5, 4, 3, 8,  4, 3,  2, 7,  3,
     2,  1, 8,  4, 3,  2, 10, 6, 5,  4, 9,  5, 4,  3, 8,  4, 3,  2, 9, 5, 4,  3},
    {10, 11, 12, 16, 6, 7, 8, 12, 5, 6, 7,  11, 4, 5, 6, 10, 9, 10, 11, 15, 5, 6, 7, 11,
     4,  5,  6,  10, 3, 4, 5, 9,  8, 9, 10, 14, 4, 5, 6, 10, 3, 4,  5,  9,  2, 3, 4, 8,
     9,  10, 11, 15, 5, 6, 7, 11, 4, 5, 6,  10, 3, 4, 5, 9,  9, 10, 11, 15, 5, 6, 7, 11,
     4,  5,  6,  10, 3, 4, 5, 9,  8, 9, 10, 14, 4, 5, 6, 10, 3, 4,  5,  9,  2, 3, 4, 8,
     7,  8,  9,  13, 3, 4, 5, 9,  2, 3, 4,  8,  1, 2, 3, 7,  8, 9,  10, 14, 4, 5, 6, 10,
     3,  4,  5,  9,  2, 3, 4, 8,  8, 9, 10, 14, 4, 5, 6, 10, 3, 4,  5,  9,  2, 3, 4, 8,
     7,  8,  9,  13, 3, 4, 5, 9,  2, 3, 4,  8,  1, 2, 3, 7,  6, 7,  8,  12, 2, 3, 4, 8,
     1,  2,  3,  7,  0, 1, 2, 6,  7, 8, 9,  13, 3, 4, 5, 9,  2, 3,  4,  8,  1, 2, 3, 7,
     9,  10, 11, 15, 5, 6, 7, 11, 4, 5, 6,  10, 3, 4, 5, 9,  8, 9,  10, 14, 4, 5, 6, 10,
     3,  4,  5,  9,  2, 3, 4, 8,  7, 8, 9,  13, 3, 4, 5, 9,  2, 3,  4,  8,  1, 2, 3, 7,
     8,  9,  10, 14, 4, 5, 6, 10, 3, 4, 5,  9,  2, 3, 4, 8},
    {11, 10, 11, 12, 7, 6,  7, 8, 6, 5,  6,  7,  5,  4,  5,  6,  10, 9, 10, 11, 6, 5, 6,  7, 5,  4,
     5,  6,  4,  3,  4, 5,  9, 8, 9, 10, 5,  4,  5,  6,  4,  3,  4,  5, 3,  2,  3, 4, 10, 9, 10, 11,
     6,  5,  6,  7,  5, 4,  5, 6, 4, 3,  4,  5,  10, 9,  10, 11, 6,  5, 6,  7,  5, 4, 5,  6, 4,  3,
     4,  5,  9,  8,  9, 10, 5, 4, 5, 6,  4,  3,  4,  5,  3,  2,  3,  4, 8,  7,  8, 9, 4,  3, 4,  5,
     3,  2,  3,  4,  2, 1,  2, 3, 9, 8,  9,  10, 5,  4,  5,  6,  4,  3, 4,  5,  3, 2, 3,  4, 9,  8,
     9,  10, 5,  4,  5, 6,  4, 3, 4, 5,  3,  2,  3,  4,  8,  7,  8,  9, 4,  3,  4, 5, 3,  2, 3,  4,
     2,  1,  2,  3,  7, 6,  7, 8, 3, 2,  3,  4,  2,  1,  2,  3,  1,  0, 1,  2,  8, 7, 8,  9, 4,  3,
     4,  5,  3,  2,  3, 4,  2, 1, 2, 3,  10, 9,  10, 11, 6,  5,  6,  7, 5,  4,  5, 6, 4,  3, 4,  5,
     9,  8,  9,  10, 5, 4,  5, 6, 4, 3,  4,  5,  3,  2,  3,  4,  8,  7, 8,  9,  4, 3, 4,  5, 3,  2,
     3,  4,  2,  1,  2, 3,  9, 8, 9, 10, 5,  4,  5,  6,  4,  3,  4,  5, 3,  2,  3, 4},
    {12, 11, 10, 11, 8, 7, 6,  7, 7,  6, 5,  6,  6,  5,  4, 5,  11, 10, 9, 10, 7, 6, 5,  6,  6,  5,
     4,  5,  5,  4,  3, 4, 10, 9, 8,  9, 6,  5,  4,  5,  5, 4,  3,  4,  4, 3,  2, 3, 11, 10, 9,  10,
     7,  6,  5,  6,  6, 5, 4,  5, 5,  4, 3,  4,  11, 10, 9, 10, 7,  6,  5, 6,  6, 5, 4,  5,  5,  4,
     3,  4,  10, 9,  8, 9, 6,  5, 4,  5, 5,  4,  3,  4,  4, 3,  2,  3,  9, 8,  7, 8, 5,  4,  3,  4,
     4,  3,  2,  3,  3, 2, 1,  2, 10, 9, 8,  9,  6,  5,  4, 5,  5,  4,  3, 4,  4, 3, 2,  3,  10, 9,
     8,  9,  6,  5,  4, 5, 5,  4, 3,  4, 4,  3,  2,  3,  9, 8,  7,  8,  5, 4,  3, 4, 4,  3,  2,  3,
     3,  2,  1,  2,  8, 7, 6,  7, 4,  3, 2,  3,  3,  2,  1, 2,  2,  1,  0, 1,  9, 8, 7,  8,  5,  4,
     3,  4,  4,  3,  2, 3, 3,  2, 1,  2, 11, 10, 9,  10, 7, 6,  5,  6,  6, 5,  4, 5, 5,  4,  3,  4,
     10, 9,  8,  9,  6, 5, 4,  5, 5,  4, 3,  4,  4,  3,  2, 3,  9,  8,  7, 8,  5, 4, 3,  4,  4,  3,
     2,  3,  3,  2,  1, 2, 10, 9, 8,  9, 6,  5,  4,  5,  5, 4,  3,  4,  4, 3,  2, 3},
    {16, 12, 11, 10, 12, 8, 7, 6, 11, 7,  6, 5, 10, 6, 5, 4, 15, 11, 10, 9, 11, 7, 6, 5,
     10, 6,  5,  4,  9,  5, 4, 3, 14, 10, 9, 8, 10, 6, 5, 4, 9,  5,  4,  3, 8,  4, 3, 2,
     15, 11, 10, 9,  11, 7, 6, 5, 10, 6,  5, 4, 9,  5, 4, 3, 15, 11, 10, 9, 11, 7, 6, 5,
     10, 6,  5,  4,  9,  5, 4, 3, 14, 10, 9, 8, 10, 6, 5, 4, 9,  5,  4,  3, 8,  4, 3, 2,
     13, 9,  8,  7,  9,  5, 4, 3, 8,  4,  3, 2, 7,  3, 2, 1, 14, 10, 9,  8, 10, 6, 5, 4,
     9,  5,  4,  3,  8,  4, 3, 2, 14, 10, 9, 8, 10, 6, 5, 4, 9,  5,  4,  3, 8,  4, 3, 2,
     13, 9,  8,  7,  9,  5, 4, 3, 8,  4,  3, 2, 7,  3, 2, 1, 12, 8,  7,  6, 8,  4, 3, 2,
     7,  3,  2,  1,  6,  2, 1, 0, 13, 9,  8, 7, 9,  5, 4, 3, 8,  4,  3,  2, 7,  3, 2, 1,
     15, 11, 10, 9,  11, 7, 6, 5, 10, 6,  5, 4, 9,  5, 4, 3, 14, 10, 9,  8, 10, 6, 5, 4,
     9,  5,  4,  3,  8,  4, 3, 2, 13, 9,  8, 7, 9,  5, 4, 3, 8,  4,  3,  2, 7,  3, 2, 1,
     14, 10, 9,  8,  10, 6, 5, 4, 9,  5,  4, 3, 8,  4, 3, 2},
    {8, 9,  10, 14, 9,  10, 11, 15, 10, 11, 12, 16, 14, 15, 16, 20, 4, 5, 6,  10, 5,  6,  7,  11,
     6, 7,  8,  12, 10, 11, 12, 16, 3,  4,  5,  9,  4,  5,  6,  10, 5, 6, 7,  11, 9,  10, 11, 15,
     2, 3,  4,  8,  3,  4,  5,  9,  4,  5,  6,  10, 8,  9,  10, 14, 7, 8, 9,  13, 8,  9,  10, 14,
     9, 10, 11, 15, 13, 14, 15, 19, 3,  4,  5,  9,  4,  5,  6,  10, 5, 6, 7,  11, 9,  10, 11, 15,
     2, 3,  4,  8,  3,  4,  5,  9,  4,  5,  6,  10, 8,  9,  10, 14, 1, 2, 3,  7,  2,  3,  4,  8,
     3, 4,  5,  9,  7,  8,  9,  13, 6,  7,  8,  12, 7,  8,  9,  13, 8, 9, 10, 14, 12, 13, 14, 18,
     2, 3,  4,  8,  3,  4,  5,  9,  4,  5,  6,  10, 8,  9,  10, 14, 1, 2, 3,  7,  2,  3,  4,  8,
     3, 4,  5,  9,  7,  8,  9,  13, 0,  1,  2,  6,  1,  2,  3,  7,  2, 3, 4,  8,  6,  7,  8,  12,
     7, 8,  9,  13, 8,  9,  10, 14, 9,  10, 11, 15, 13, 14, 15, 19, 3, 4, 5,  9,  4,  5,  6,  10,
     5, 6,  7,  11, 9,  10, 11, 15, 2,  3,  4,  8,  3,  4,  5,  9,  4, 5, 6,  10, 8,  9,  10, 14,
     1, 2,  3,  7,  2,  3,  4,  8,  3,  4,  5,  9,  7,  8,  9,  13},
    {9,  8, 9,  10, 10, 9,  10, 11, 11, 10, 11, 12, 15, 14, 15, 16, 5, 4, 5, 6,  6,  5,  6,  7,
     7,  6, 7,  8,  11, 10, 11, 12, 4,  3,  4,  5,  5,  4,  5,  6,  6, 5, 6, 7,  10, 9,  10, 11,
     3,  2, 3,  4,  4,  3,  4,  5,  5,  4,  5,  6,  9,  8,  9,  10, 8, 7, 8, 9,  9,  8,  9,  10,
     10, 9, 10, 11, 14, 13, 14, 15, 4,  3,  4,  5,  5,  4,  5,  6,  6, 5, 6, 7,  10, 9,  10, 11,
     3,  2, 3,  4,  4,  3,  4,  5,  5,  4,  5,  6,  9,  8,  9,  10, 2, 1, 2, 3,  3,  2,  3,  4,
     4,  3, 4,  5,  8,  7,  8,  9,  7,  6,  7,  8,  8,  7,  8,  9,  9, 8, 9, 10, 13, 12, 13, 14,
     3,  2, 3,  4,  4,  3,  4,  5,  5,  4,  5,  6,  9,  8,  9,  10, 2, 1, 2, 3,  3,  2,  3,  4,
     4,  3, 4,  5,  8,  7,  8,  9,  1,  0,  1,  2,  2,  1,  2,  3,  3, 2, 3, 4,  7,  6,  7,  8,
     8,  7, 8,  9,  9,  8,  9,  10, 10, 9,  10, 11, 14, 13, 14, 15, 4, 3, 4, 5,  5,  4,  5,  6,
     6,  5, 6,  7,  10, 9,  10, 11, 3,  2,  3,  4,  4,  3,  4,  5,  5, 4, 5, 6,  9,  8,  9,  10,
     2,  1, 2,  3,  3,  2,  3,  4,  4,  3,  4,  5,  8,  7,  8,  9},
    {10, 9,  8, 9,  11, 10, 9,  10, 12, 11, 10, 11, 16, 15, 14, 15, 6,  5, 4, 5, 7,  6,  5,  6,
     8,  7,  6, 7,  12, 11, 10, 11, 5,  4,  3,  4,  6,  5,  4,  5,  7,  6, 5, 6, 11, 10, 9,  10,
     4,  3,  2, 3,  5,  4,  3,  4,  6,  5,  4,  5,  10, 9,  8,  9,  9,  8, 7, 8, 10, 9,  8,  9,
     11, 10, 9, 10, 15, 14, 13, 14, 5,  4,  3,  4,  6,  5,  4,  5,  7,  6, 5, 6, 11, 10, 9,  10,
     4,  3,  2, 3,  5,  4,  3,  4,  6,  5,  4,  5,  10, 9,  8,  9,  3,  2, 1, 2, 4,  3,  2,  3,
     5,  4,  3, 4,  9,  8,  7,  8,  8,  7,  6,  7,  9,  8,  7,  8,  10, 9, 8, 9, 14, 13, 12, 13,
     4,  3,  2, 3,  5,  4,  3,  4,  6,  5,  4,  5,  10, 9,  8,  9,  3,  2, 1, 2, 4,  3,  2,  3,
     5,  4,  3, 4,  9,  8,  7,  8,  2,  1,  0,  1,  3,  2,  1,  2,  4,  3, 2, 3, 8,  7,  6,  7,
     9,  8,  7, 8,  10, 9,  8,  9,  11, 10, 9,  10, 15, 14, 13, 14, 5,  4, 3, 4, 6,  5,  4,  5,
     7,  6,  5, 6,  11, 10, 9,  10, 4,  3,  2,  3,  5,  4,  3,  4,  6,  5, 4, 5, 10, 9,  8,  9,
     3,  2,  1, 2,  4,  3,  2,  3,  5,  4,  3,  4,  9,  8,  7,  8},
    {14, 10, 9,  8, 15, 11, 10, 9,  16, 12, 11, 10, 20, 16, 15, 14, 10, 6,  5, 4, 11, 7,  6,  5,
     12, 8,  7,  6, 16, 12, 11, 10, 9,  5,  4,  3,  10, 6,  5,  4,  11, 7,  6, 5, 15, 11, 10, 9,
     8,  4,  3,  2, 9,  5,  4,  3,  10, 6,  5,  4,  14, 10, 9,  8,  13, 9,  8, 7, 14, 10, 9,  8,
     15, 11, 10, 9, 19, 15, 14, 13, 9,  5,  4,  3,  10, 6,  5,  4,  11, 7,  6, 5, 15, 11, 10, 9,
     8,  4,  3,  2, 9,  5,  4,  3,  10, 6,  5,  4,  14, 10, 9,  8,  7,  3,  2, 1, 8,  4,  3,  2,
     9,  5,  4,  3, 13, 9,  8,  7,  12, 8,  7,  6,  13, 9,  8,  7,  14, 10, 9, 8, 18, 14, 13, 12,
     8,  4,  3,  2, 9,  5,  4,  3,  10, 6,  5,  4,  14, 10, 9,  8,  7,  3,  2, 1, 8,  4,  3,  2,
     9,  5,  4,  3, 13, 9,  8,  7,  6,  2,  1,  0,  7,  3,  2,  1,  8,  4,  3, 2, 12, 8,  7,  6,
     13, 9,  8,  7, 14, 10, 9,  8,  15, 11, 10, 9,  19, 15, 14, 13, 9,  5,  4, 3, 10, 6,  5,  4,
     11, 7,  6,  5, 15, 11, 10, 9,  8,  4,  3,  2,  9,  5,  4,  3,  10, 6,  5, 4, 14, 10, 9,  8,
     7,  3,  2,  1, 8,  4,  3,  2,  9,  5,  4,  3,  13, 9,  8,  7},
    {9, 10, 11, 15, 8, 9,  10, 14, 9, 10, 11, 15, 10, 11, 12, 16, 5, 6, 7,  11, 4, 5, 6,  10,
     5, 6,  7,  11, 6, 7,  8,  12, 4, 5,  6,  10, 3,  4,  5,  9,  4, 5, 6,  10, 5, 6, 7,  11,
     3, 4,  5,  9,  2, 3,  4,  8,  3, 4,  5,  9,  4,  5,  6,  10, 8, 9, 10, 14, 7, 8, 9,  13,
     8, 9,  10, 14, 9, 10, 11, 15, 4, 5,  6,  10, 3,  4,  5,  9,  4, 5, 6,  10, 5, 6, 7,  11,
     3, 4,  5,  9,  2, 3,  4,  8,  3, 4,  5,  9,  4,  5,  6,  10, 2, 3, 4,  8,  1, 2, 3,  7,
     2, 3,  4,  8,  3, 4,  5,  9,  7, 8,  9,  13, 6,  7,  8,  12, 7, 8, 9,  13, 8, 9, 10, 14,
     3, 4,  5,  9,  2, 3,  4,  8,  3, 4,  5,  9,  4,  5,  6,  10, 2, 3, 4,  8,  1, 2, 3,  7,
     2, 3,  4,  8,  3, 4,  5,  9,  1, 2,  3,  7,  0,  1,  2,  6,  1, 2, 3,  7,  2, 3, 4,  8,
     8, 9,  10, 14, 7, 8,  9,  13, 8, 9,  10, 14, 9,  10, 11, 15, 4, 5, 6,  10, 3, 4, 5,  9,
     4, 5,  6,  10, 5, 6,  7,  11, 3, 4,  5,  9,  2,  3,  4,  8,  3, 4, 5,  9,  4, 5, 6,  10,
     2, 3,  4,  8,  1, 2,  3,  7,  2, 3,  4,  8,  3,  4,  5,  9},
    {10, 9,  10, 11, 9, 8, 9, 10, 10, 9, 10, 11, 11, 10, 11, 12, 6, 5, 6, 7, 5, 4,  5,  6,  6,  5,
     6,  7,  7,  6,  7, 8, 5, 4,  5,  6, 4,  3,  4,  5,  5,  4,  5, 6, 6, 5, 6, 7,  4,  3,  4,  5,
     3,  2,  3,  4,  4, 3, 4, 5,  5,  4, 5,  6,  9,  8,  9,  10, 8, 7, 8, 9, 9, 8,  9,  10, 10, 9,
     10, 11, 5,  4,  5, 6, 4, 3,  4,  5, 5,  4,  5,  6,  6,  5,  6, 7, 4, 3, 4, 5,  3,  2,  3,  4,
     4,  3,  4,  5,  5, 4, 5, 6,  3,  2, 3,  4,  2,  1,  2,  3,  3, 2, 3, 4, 4, 3,  4,  5,  8,  7,
     8,  9,  7,  6,  7, 8, 8, 7,  8,  9, 9,  8,  9,  10, 4,  3,  4, 5, 3, 2, 3, 4,  4,  3,  4,  5,
     5,  4,  5,  6,  3, 2, 3, 4,  2,  1, 2,  3,  3,  2,  3,  4,  4, 3, 4, 5, 2, 1,  2,  3,  1,  0,
     1,  2,  2,  1,  2, 3, 3, 2,  3,  4, 9,  8,  9,  10, 8,  7,  8, 9, 9, 8, 9, 10, 10, 9,  10, 11,
     5,  4,  5,  6,  4, 3, 4, 5,  5,  4, 5,  6,  6,  5,  6,  7,  4, 3, 4, 5, 3, 2,  3,  4,  4,  3,
     4,  5,  5,  4,  5, 6, 3, 2,  3,  4, 2,  1,  2,  3,  3,  2,  3, 4, 4, 3, 4, 5},
    {11, 10, 9, 10, 10, 9, 8, 9, 11, 10, 9,  10, 12, 11, 10, 11, 7, 6, 5,  6, 6,  5, 4,  5,  7,  6,
     5,  6,  8, 7,  6,  7, 6, 5, 4,  5,  5,  4,  3,  4,  6,  5,  4, 5, 7,  6, 5,  6, 5,  4,  3,  4,
     4,  3,  2, 3,  5,  4, 3, 4, 6,  5,  4,  5,  10, 9,  8,  9,  9, 8, 7,  8, 10, 9, 8,  9,  11, 10,
     9,  10, 6, 5,  4,  5, 5, 4, 3,  4,  6,  5,  4,  5,  7,  6,  5, 6, 5,  4, 3,  4, 4,  3,  2,  3,
     5,  4,  3, 4,  6,  5, 4, 5, 4,  3,  2,  3,  3,  2,  1,  2,  4, 3, 2,  3, 5,  4, 3,  4,  9,  8,
     7,  8,  8, 7,  6,  7, 9, 8, 7,  8,  10, 9,  8,  9,  5,  4,  3, 4, 4,  3, 2,  3, 5,  4,  3,  4,
     6,  5,  4, 5,  4,  3, 2, 3, 3,  2,  1,  2,  4,  3,  2,  3,  5, 4, 3,  4, 3,  2, 1,  2,  2,  1,
     0,  1,  3, 2,  1,  2, 4, 3, 2,  3,  10, 9,  8,  9,  9,  8,  7, 8, 10, 9, 8,  9, 11, 10, 9,  10,
     6,  5,  4, 5,  5,  4, 3, 4, 6,  5,  4,  5,  7,  6,  5,  6,  5, 4, 3,  4, 4,  3, 2,  3,  5,  4,
     3,  4,  6, 5,  4,  5, 4, 3, 2,  3,  3,  2,  1,  2,  4,  3,  2, 3, 5,  4, 3,  4},
    {15, 11, 10, 9, 14, 10, 9,  8, 15, 11, 10, 9, 16, 12, 11, 10, 11, 7,  6, 5, 10, 6,  5, 4,
     11, 7,  6,  5, 12, 8,  7,  6, 10, 6,  5,  4, 9,  5,  4,  3,  10, 6,  5, 4, 11, 7,  6, 5,
     9,  5,  4,  3, 8,  4,  3,  2, 9,  5,  4,  3, 10, 6,  5,  4,  14, 10, 9, 8, 13, 9,  8, 7,
     14, 10, 9,  8, 15, 11, 10, 9, 10, 6,  5,  4, 9,  5,  4,  3,  10, 6,  5, 4, 11, 7,  6, 5,
     9,  5,  4,  3, 8,  4,  3,  2, 9,  5,  4,  3, 10, 6,  5,  4,  8,  4,  3, 2, 7,  3,  2, 1,
     8,  4,  3,  2, 9,  5,  4,  3, 13, 9,  8,  7, 12, 8,  7,  6,  13, 9,  8, 7, 14, 10, 9, 8,
     9,  5,  4,  3, 8,  4,  3,  2, 9,  5,  4,  3, 10, 6,  5,  4,  8,  4,  3, 2, 7,  3,  2, 1,
     8,  4,  3,  2, 9,  5,  4,  3, 7,  3,  2,  1, 6,  2,  1,  0,  7,  3,  2, 1, 8,  4,  3, 2,
     14, 10, 9,  8, 13, 9,  8,  7, 14, 10, 9,  8, 15, 11, 10, 9,  10, 6,  5, 4, 9,  5,  4, 3,
     10, 6,  5,  4, 11, 7,  6,  5, 9,  5,  4,  3, 8,  4,  3,  2,  9,  5,  4, 3, 10, 6,  5, 4,
     8,  4,  3,  2, 7,  3,  2,  1, 8,  4,  3,  2, 9,  5,  4,  3},
    {10, 11, 12, 16, 9, 10, 11, 15, 8, 9, 10, 14, 9, 10, 11, 15, 6, 7,  8,  12, 5, 6, 7,  11,
     4,  5,  6,  10, 5, 6,  7,  11, 5, 6, 7,  11, 4, 5,  6,  10, 3, 4,  5,  9,  4, 5, 6,  10,
     4,  5,  6,  10, 3, 4,  5,  9,  2, 3, 4,  8,  3, 4,  5,  9,  9, 10, 11, 15, 8, 9, 10, 14,
     7,  8,  9,  13, 8, 9,  10, 14, 5, 6, 7,  11, 4, 5,  6,  10, 3, 4,  5,  9,  4, 5, 6,  10,
     4,  5,  6,  10, 3, 4,  5,  9,  2, 3, 4,  8,  3, 4,  5,  9,  3, 4,  5,  9,  2, 3, 4,  8,
     1,  2,  3,  7,  2, 3,  4,  8,  8, 9, 10, 14, 7, 8,  9,  13, 6, 7,  8,  12, 7, 8, 9,  13,
     4,  5,  6,  10, 3, 4,  5,  9,  2, 3, 4,  8,  3, 4,  5,  9,  3, 4,  5,  9,  2, 3, 4,  8,
     1,  2,  3,  7,  2, 3,  4,  8,  2, 3, 4,  8,  1, 2,  3,  7,  0, 1,  2,  6,  1, 2, 3,  7,
     9,  10, 11, 15, 8, 9,  10, 14, 7, 8, 9,  13, 8, 9,  10, 14, 5, 6,  7,  11, 4, 5, 6,  10,
     3,  4,  5,  9,  4, 5,  6,  10, 4, 5, 6,  10, 3, 4,  5,  9,  2, 3,  4,  8,  3, 4, 5,  9,
     3,  4,  5,  9,  2, 3,  4,  8,  1, 2, 3,  7,  2, 3,  4,  8},
    {11, 10, 11, 12, 10, 9, 10, 11, 9, 8, 9,  10, 10, 9,  10, 11, 7, 6,  7, 8,  6, 5, 6, 7, 5, 4,
     5,  6,  6,  5,  6,  7, 6,  5,  6, 7, 5,  4,  5,  6,  4,  3,  4, 5,  5, 4,  5, 6, 5, 4, 5, 6,
     4,  3,  4,  5,  3,  2, 3,  4,  4, 3, 4,  5,  10, 9,  10, 11, 9, 8,  9, 10, 8, 7, 8, 9, 9, 8,
     9,  10, 6,  5,  6,  7, 5,  4,  5, 6, 4,  3,  4,  5,  5,  4,  5, 6,  5, 4,  5, 6, 4, 3, 4, 5,
     3,  2,  3,  4,  4,  3, 4,  5,  4, 3, 4,  5,  3,  2,  3,  4,  2, 1,  2, 3,  3, 2, 3, 4, 9, 8,
     9,  10, 8,  7,  8,  9, 7,  6,  7, 8, 8,  7,  8,  9,  5,  4,  5, 6,  4, 3,  4, 5, 3, 2, 3, 4,
     4,  3,  4,  5,  4,  3, 4,  5,  3, 2, 3,  4,  2,  1,  2,  3,  3, 2,  3, 4,  3, 2, 3, 4, 2, 1,
     2,  3,  1,  0,  1,  2, 2,  1,  2, 3, 10, 9,  10, 11, 9,  8,  9, 10, 8, 7,  8, 9, 9, 8, 9, 10,
     6,  5,  6,  7,  5,  4, 5,  6,  4, 3, 4,  5,  5,  4,  5,  6,  5, 4,  5, 6,  4, 3, 4, 5, 3, 2,
     3,  4,  4,  3,  4,  5, 4,  3,  4, 5, 3,  2,  3,  4,  2,  1,  2, 3,  3, 2,  3, 4},
    {12, 11, 10, 11, 11, 10, 9, 10, 10, 9, 8,  9,  11, 10, 9,  10, 8,  7, 6, 7, 7, 6, 5,  6, 6,  5,
     4,  5,  7,  6,  5,  6,  7, 6,  5,  6, 6,  5,  4,  5,  5,  4,  3,  4, 6, 5, 4, 5, 6,  5, 4,  5,
     5,  4,  3,  4,  4,  3,  2, 3,  5,  4, 3,  4,  11, 10, 9,  10, 10, 9, 8, 9, 9, 8, 7,  8, 10, 9,
     8,  9,  7,  6,  5,  6,  6, 5,  4,  5, 5,  4,  3,  4,  6,  5,  4,  5, 6, 5, 4, 5, 5,  4, 3,  4,
     4,  3,  2,  3,  5,  4,  3, 4,  5,  4, 3,  4,  4,  3,  2,  3,  3,  2, 1, 2, 4, 3, 2,  3, 10, 9,
     8,  9,  9,  8,  7,  8,  8, 7,  6,  7, 9,  8,  7,  8,  6,  5,  4,  5, 5, 4, 3, 4, 4,  3, 2,  3,
     5,  4,  3,  4,  5,  4,  3, 4,  4,  3, 2,  3,  3,  2,  1,  2,  4,  3, 2, 3, 4, 3, 2,  3, 3,  2,
     1,  2,  2,  1,  0,  1,  3, 2,  1,  2, 11, 10, 9,  10, 10, 9,  8,  9, 9, 8, 7, 8, 10, 9, 8,  9,
     7,  6,  5,  6,  6,  5,  4, 5,  5,  4, 3,  4,  6,  5,  4,  5,  6,  5, 4, 5, 5, 4, 3,  4, 4,  3,
     2,  3,  5,  4,  3,  4,  5, 4,  3,  4, 4,  3,  2,  3,  3,  2,  1,  2, 4, 3, 2, 3},
    {16, 12, 11, 10, 15, 11, 10, 9, 14, 10, 9, 8, 15, 11, 10, 9, 12, 8,  7,  6, 11, 7,  6, 5,
     10, 6,  5,  4,  11, 7,  6,  5, 11, 7,  6, 5, 10, 6,  5,  4, 9,  5,  4,  3, 10, 6,  5, 4,
     10, 6,  5,  4,  9,  5,  4,  3, 8,  4,  3, 2, 9,  5,  4,  3, 15, 11, 10, 9, 14, 10, 9, 8,
     13, 9,  8,  7,  14, 10, 9,  8, 11, 7,  6, 5, 10, 6,  5,  4, 9,  5,  4,  3, 10, 6,  5, 4,
     10, 6,  5,  4,  9,  5,  4,  3, 8,  4,  3, 2, 9,  5,  4,  3, 9,  5,  4,  3, 8,  4,  3, 2,
     7,  3,  2,  1,  8,  4,  3,  2, 14, 10, 9, 8, 13, 9,  8,  7, 12, 8,  7,  6, 13, 9,  8, 7,
     10, 6,  5,  4,  9,  5,  4,  3, 8,  4,  3, 2, 9,  5,  4,  3, 9,  5,  4,  3, 8,  4,  3, 2,
     7,  3,  2,  1,  8,  4,  3,  2, 8,  4,  3, 2, 7,  3,  2,  1, 6,  2,  1,  0, 7,  3,  2, 1,
     15, 11, 10, 9,  14, 10, 9,  8, 13, 9,  8, 7, 14, 10, 9,  8, 11, 7,  6,  5, 10, 6,  5, 4,
     9,  5,  4,  3,  10, 6,  5,  4, 10, 6,  5, 4, 9,  5,  4,  3, 8,  4,  3,  2, 9,  5,  4, 3,
     9,  5,  4,  3,  8,  4,  3,  2, 7,  3,  2, 1, 8,  4,  3,  2},
    {14, 15, 16, 20, 10, 11, 12, 16, 9,  10, 11, 15, 8, 9, 10, 14, 10, 11, 12, 16, 6, 7,  8,  12,
     5,  6,  7,  11, 4,  5,  6,  10, 9,  10, 11, 15, 5, 6, 7,  11, 4,  5,  6,  10, 3, 4,  5,  9,
     8,  9,  10, 14, 4,  5,  6,  10, 3,  4,  5,  9,  2, 3, 4,  8,  13, 14, 15, 19, 9, 10, 11, 15,
     8,  9,  10, 14, 7,  8,  9,  13, 9,  10, 11, 15, 5, 6, 7,  11, 4,  5,  6,  10, 3, 4,  5,  9,
     8,  9,  10, 14, 4,  5,  6,  10, 3,  4,  5,  9,  2, 3, 4,  8,  7,  8,  9,  13, 3, 4,  5,  9,
     2,  3,  4,  8,  1,  2,  3,  7,  12, 13, 14, 18, 8, 9, 10, 14, 7,  8,  9,  13, 6, 7,  8,  12,
     8,  9,  10, 14, 4,  5,  6,  10, 3,  4,  5,  9,  2, 3, 4,  8,  7,  8,  9,  13, 3, 4,  5,  9,
     2,  3,  4,  8,  1,  2,  3,  7,  6,  7,  8,  12, 2, 3, 4,  8,  1,  2,  3,  7,  0, 1,  2,  6,
     13, 14, 15, 19, 9,  10, 11, 15, 8,  9,  10, 14, 7, 8, 9,  13, 9,  10, 11, 15, 5, 6,  7,  11,
     4,  5,  6,  10, 3,  4,  5,  9,  8,  9,  10, 14, 4, 5, 6,  10, 3,  4,  5,  9,  2, 3,  4,  8,
     7,  8,  9,  13, 3,  4,  5,  9,  2,  3,  4,  8,  1, 2, 3,  7},
    {15, 14, 15, 16, 11, 10, 11, 12, 10, 9,  10, 11, 9, 8, 9, 10, 11, 10, 11, 12, 7,  6, 7,  8,
     6,  5,  6,  7,  5,  4,  5,  6,  10, 9,  10, 11, 6, 5, 6, 7,  5,  4,  5,  6,  4,  3, 4,  5,
     9,  8,  9,  10, 5,  4,  5,  6,  4,  3,  4,  5,  3, 2, 3, 4,  14, 13, 14, 15, 10, 9, 10, 11,
     9,  8,  9,  10, 8,  7,  8,  9,  10, 9,  10, 11, 6, 5, 6, 7,  5,  4,  5,  6,  4,  3, 4,  5,
     9,  8,  9,  10, 5,  4,  5,  6,  4,  3,  4,  5,  3, 2, 3, 4,  8,  7,  8,  9,  4,  3, 4,  5,
     3,  2,  3,  4,  2,  1,  2,  3,  13, 12, 13, 14, 9, 8, 9, 10, 8,  7,  8,  9,  7,  6, 7,  8,
     9,  8,  9,  10, 5,  4,  5,  6,  4,  3,  4,  5,  3, 2, 3, 4,  8,  7,  8,  9,  4,  3, 4,  5,
     3,  2,  3,  4,  2,  1,  2,  3,  7,  6,  7,  8,  3, 2, 3, 4,  2,  1,  2,  3,  1,  0, 1,  2,
     14, 13, 14, 15, 10, 9,  10, 11, 9,  8,  9,  10, 8, 7, 8, 9,  10, 9,  10, 11, 6,  5, 6,  7,
     5,  4,  5,  6,  4,  3,  4,  5,  9,  8,  9,  10, 5, 4, 5, 6,  4,  3,  4,  5,  3,  2, 3,  4,
     8,  7,  8,  9,  4,  3,  4,  5,  3,  2,  3,  4,  2, 1, 2, 3},
    {16, 15, 14, 15, 12, 11, 10, 11, 11, 10, 9,  10, 10, 9, 8, 9, 12, 11, 10, 11, 8,  7,  6, 7,
     7,  6,  5,  6,  6,  5,  4,  5,  11, 10, 9,  10, 7,  6, 5, 6, 6,  5,  4,  5,  5,  4,  3, 4,
     10, 9,  8,  9,  6,  5,  4,  5,  5,  4,  3,  4,  4,  3, 2, 3, 15, 14, 13, 14, 11, 10, 9, 10,
     10, 9,  8,  9,  9,  8,  7,  8,  11, 10, 9,  10, 7,  6, 5, 6, 6,  5,  4,  5,  5,  4,  3, 4,
     10, 9,  8,  9,  6,  5,  4,  5,  5,  4,  3,  4,  4,  3, 2, 3, 9,  8,  7,  8,  5,  4,  3, 4,
     4,  3,  2,  3,  3,  2,  1,  2,  14, 13, 12, 13, 10, 9, 8, 9, 9,  8,  7,  8,  8,  7,  6, 7,
     10, 9,  8,  9,  6,  5,  4,  5,  5,  4,  3,  4,  4,  3, 2, 3, 9,  8,  7,  8,  5,  4,  3, 4,
     4,  3,  2,  3,  3,  2,  1,  2,  8,  7,  6,  7,  4,  3, 2, 3, 3,  2,  1,  2,  2,  1,  0, 1,
     15, 14, 13, 14, 11, 10, 9,  10, 10, 9,  8,  9,  9,  8, 7, 8, 11, 10, 9,  10, 7,  6,  5, 6,
     6,  5,  4,  5,  5,  4,  3,  4,  10, 9,  8,  9,  6,  5, 4, 5, 5,  4,  3,  4,  4,  3,  2, 3,
     9,  8,  7,  8,  5,  4,  3,  4,  4,  3,  2,  3,  3,  2, 1, 2},
    {20, 16, 15, 14, 16, 12, 11, 10, 15, 11, 10, 9,  14, 10, 9, 8, 16, 12, 11, 10, 12, 8,  7,  6,
     11, 7,  6,  5,  10, 6,  5,  4,  15, 11, 10, 9,  11, 7,  6, 5, 10, 6,  5,  4,  9,  5,  4,  3,
     14, 10, 9,  8,  10, 6,  5,  4,  9,  5,  4,  3,  8,  4,  3, 2, 19, 15, 14, 13, 15, 11, 10, 9,
     14, 10, 9,  8,  13, 9,  8,  7,  15, 11, 10, 9,  11, 7,  6, 5, 10, 6,  5,  4,  9,  5,  4,  3,
     14, 10, 9,  8,  10, 6,  5,  4,  9,  5,  4,  3,  8,  4,  3, 2, 13, 9,  8,  7,  9,  5,  4,  3,
     8,  4,  3,  2,  7,  3,  2,  1,  18, 14, 13, 12, 14, 10, 9, 8, 13, 9,  8,  7,  12, 8,  7,  6,
     14, 10, 9,  8,  10, 6,  5,  4,  9,  5,  4,  3,  8,  4,  3, 2, 13, 9,  8,  7,  9,  5,  4,  3,
     8,  4,  3,  2,  7,  3,  2,  1,  12, 8,  7,  6,  8,  4,  3, 2, 7,  3,  2,  1,  6,  2,  1,  0,
     19, 15, 14, 13, 15, 11, 10, 9,  14, 10, 9,  8,  13, 9,  8, 7, 15, 11, 10, 9,  11, 7,  6,  5,
     10, 6,  5,  4,  9,  5,  4,  3,  14, 10, 9,  8,  10, 6,  5, 4, 9,  5,  4,  3,  8,  4,  3,  2,
     13, 9,  8,  7,  9,  5,  4,  3,  8,  4,  3,  2,  7,  3,  2, 1},
    {6,  7,  8,  12, 7,  8,  9,  13, 8,  9,  10, 14, 12, 13, 14, 18, 7,  8,  9,  13, 8,  9,  10, 14,
     9,  10, 11, 15, 13, 14, 15, 19, 8,  9,  10, 14, 9,  10, 11, 15, 10, 11, 12, 16, 14, 15, 16, 20,
     12, 13, 14, 18, 13, 14, 15, 19, 14, 15, 16, 20, 18, 19, 20, 24, 2,  3,  4,  8,  3,  4,  5,  9,
     4,  5,  6,  10, 8,  9,  10, 14, 3,  4,  5,  9,  4,  5,  6,  10, 5,  6,  7,  11, 9,  10, 11, 15,
     4,  5,  6,  10, 5,  6,  7,  11, 6,  7,  8,  12, 10, 11, 12, 16, 8,  9,  10, 14, 9,  10, 11, 15,
     10, 11, 12, 16, 14, 15, 16, 20, 1,  2,  3,  7,  2,  3,  4,  8,  3,  4,  5,  9,  7,  8,  9,  13,
     2,  3,  4,  8,  3,  4,  5,  9,  4,  5,  6,  10, 8,  9,  10, 14, 3,  4,  5,  9,  4,  5,  6,  10,
     5,  6,  7,  11, 9,  10, 11, 15, 7,  8,  9,  13, 8,  9,  10, 14, 9,  10, 11, 15, 13, 14, 15, 19,
     0,  1,  2,  6,  1,  2,  3,  7,  2,  3,  4,  8,  6,  7,  8,  12, 1,  2,  3,  7,  2,  3,  4,  8,
     3,  4,  5,  9,  7,  8,  9,  13, 2,  3,  4,  8,  3,  4,  5,  9,  4,  5,  6,  10, 8,  9,  10, 14,
     6,  7,  8,  12, 7,  8,  9,  13, 8,  9,  10, 14, 12, 13, 14, 18},
    {7,  6,  7,  8,  8,  7,  8,  9,  9,  8,  9,  10, 13, 12, 13, 14, 8,  7,  8,  9,  9,  8,  9,  10,
     10, 9,  10, 11, 14, 13, 14, 15, 9,  8,  9,  10, 10, 9,  10, 11, 11, 10, 11, 12, 15, 14, 15, 16,
     13, 12, 13, 14, 14, 13, 14, 15, 15, 14, 15, 16, 19, 18, 19, 20, 3,  2,  3,  4,  4,  3,  4,  5,
     5,  4,  5,  6,  9,  8,  9,  10, 4,  3,  4,  5,  5,  4,  5,  6,  6,  5,  6,  7,  10, 9,  10, 11,
     5,  4,  5,  6,  6,  5,  6,  7,  7,  6,  7,  8,  11, 10, 11, 12, 9,  8,  9,  10, 10, 9,  10, 11,
     11, 10, 11, 12, 15, 14, 15, 16, 2,  1,  2,  3,  3,  2,  3,  4,  4,  3,  4,  5,  8,  7,  8,  9,
     3,  2,  3,  4,  4,  3,  4,  5,  5,  4,  5,  6,  9,  8,  9,  10, 4,  3,  4,  5,  5,  4,  5,  6,
     6,  5,  6,  7,  10, 9,  10, 11, 8,  7,  8,  9,  9,  8,  9,  10, 10, 9,  10, 11, 14, 13, 14, 15,
     1,  0,  1,  2,  2,  1,  2,  3,  3,  2,  3,  4,  7,  6,  7,  8,  2,  1,  2,  3,  3,  2,  3,  4,
     4,  3,  4,  5,  8,  7,  8,  9,  3,  2,  3,  4,  4,  3,  4,  5,  5,  4,  5,  6,  9,  8,  9,  10,
     7,  6,  7,  8,  8,  7,  8,  9,  9,  8,  9,  10, 13, 12, 13, 14},
    {8,  7,  6,  7,  9,  8,  7,  8,  10, 9,  8,  9,  14, 13, 12, 13, 9,  8,  7,  8,  10, 9,  8,  9,
     11, 10, 9,  10, 15, 14, 13, 14, 10, 9,  8,  9,  11, 10, 9,  10, 12, 11, 10, 11, 16, 15, 14, 15,
     14, 13, 12, 13, 15, 14, 13, 14, 16, 15, 14, 15, 20, 19, 18, 19, 4,  3,  2,  3,  5,  4,  3,  4,
     6,  5,  4,  5,  10, 9,  8,  9,  5,  4,  3,  4,  6,  5,  4,  5,  7,  6,  5,  6,  11, 10, 9,  10,
     6,  5,  4,  5,  7,  6,  5,  6,  8,  7,  6,  7,  12, 11, 10, 11, 10, 9,  8,  9,  11, 10, 9,  10,
     12, 11, 10, 11, 16, 15, 14, 15, 3,  2,  1,  2,  4,  3,  2,  3,  5,  4,  3,  4,  9,  8,  7,  8,
     4,  3,  2,  3,  5,  4,  3,  4,  6,  5,  4,  5,  10, 9,  8,  9,  5,  4,  3,  4,  6,  5,  4,  5,
     7,  6,  5,  6,  11, 10, 9,  10, 9,  8,  7,  8,  10, 9,  8,  9,  11, 10, 9,  10, 15, 14, 13, 14,
     2,  1,  0,  1,  3,  2,  1,  2,  4,  3,  2,  3,  8,  7,  6,  7,  3,  2,  1,  2,  4,  3,  2,  3,
     5,  4,  3,  4,  9,  8,  7,  8,  4,  3,  2,  3,  5,  4,  3,  4,  6,  5,  4,  5,  10, 9,  8,  9,
     8,  7,  6,  7,  9,  8,  7,  8,  10, 9,  8,  9,  14, 13, 12, 13},
    {12, 8,  7,  6,  13, 9,  8,  7,  14, 10, 9,  8,  18, 14, 13, 12, 13, 9,  8,  7,  14, 10, 9,  8,
     15, 11, 10, 9,  19, 15, 14, 13, 14, 10, 9,  8,  15, 11, 10, 9,  16, 12, 11, 10, 20, 16, 15, 14,
     18, 14, 13, 12, 19, 15, 14, 13, 20, 16, 15, 14, 24, 20, 19, 18, 8,  4,  3,  2,  9,  5,  4,  3,
     10, 6,  5,  4,  14, 10, 9,  8,  9,  5,  4,  3,  10, 6,  5,  4,  11, 7,  6,  5,  15, 11, 10, 9,
     10, 6,  5,  4,  11, 7,  6,  5,  12, 8,  7,  6,  16, 12, 11, 10, 14, 10, 9,  8,  15, 11, 10, 9,
     16, 12, 11, 10, 20, 16, 15, 14, 7,  3,  2,  1,  8,  4,  3,  2,  9,  5,  4,  3,  13, 9,  8,  7,
     8,  4,  3,  2,  9,  5,  4,  3,  10, 6,  5,  4,  14, 10, 9,  8,  9,  5,  4,  3,  10, 6,  5,  4,
     11, 7,  6,  5,  15, 11, 10, 9,  13, 9,  8,  7,  14, 10, 9,  8,  15, 11, 10, 9,  19, 15, 14, 13,
     6,  2,  1,  0,  7,  3,  2,  1,  8,  4,  3,  2,  12, 8,  7,  6,  7,  3,  2,  1,  8,  4,  3,  2,
     9,  5,  4,  3,  13, 9,  8,  7,  8,  4,  3,  2,  9,  5,  4,  3,  10, 6,  5,  4,  14, 10, 9,  8,
     12, 8,  7,  6,  13, 9,  8,  7,  14, 10, 9,  8,  18, 14, 13, 12},
    {7,  8,  9,  13, 6,  7,  8,  12, 7,  8,  9,  13, 8,  9,  10, 14, 8, 9,  10, 14, 7,  8,  9,  13,
     8,  9,  10, 14, 9,  10, 11, 15, 9,  10, 11, 15, 8,  9,  10, 14, 9, 10, 11, 15, 10, 11, 12, 16,
     13, 14, 15, 19, 12, 13, 14, 18, 13, 14, 15, 19, 14, 15, 16, 20, 3, 4,  5,  9,  2,  3,  4,  8,
     3,  4,  5,  9,  4,  5,  6,  10, 4,  5,  6,  10, 3,  4,  5,  9,  4, 5,  6,  10, 5,  6,  7,  11,
     5,  6,  7,  11, 4,  5,  6,  10, 5,  6,  7,  11, 6,  7,  8,  12, 9, 10, 11, 15, 8,  9,  10, 14,
     9,  10, 11, 15, 10, 11, 12, 16, 2,  3,  4,  8,  1,  2,  3,  7,  2, 3,  4,  8,  3,  4,  5,  9,
     3,  4,  5,  9,  2,  3,  4,  8,  3,  4,  5,  9,  4,  5,  6,  10, 4, 5,  6,  10, 3,  4,  5,  9,
     4,  5,  6,  10, 5,  6,  7,  11, 8,  9,  10, 14, 7,  8,  9,  13, 8, 9,  10, 14, 9,  10, 11, 15,
     1,  2,  3,  7,  0,  1,  2,  6,  1,  2,  3,  7,  2,  3,  4,  8,  2, 3,  4,  8,  1,  2,  3,  7,
     2,  3,  4,  8,  3,  4,  5,  9,  3,  4,  5,  9,  2,  3,  4,  8,  3, 4,  5,  9,  4,  5,  6,  10,
     7,  8,  9,  13, 6,  7,  8,  12, 7,  8,  9,  13, 8,  9,  10, 14},
    {8,  7,  8,  9,  7,  6,  7,  8,  8,  7,  8,  9,  9,  8,  9,  10, 9,  8, 9,  10, 8,  7,  8,  9,
     9,  8,  9,  10, 10, 9,  10, 11, 10, 9,  10, 11, 9,  8,  9,  10, 10, 9, 10, 11, 11, 10, 11, 12,
     14, 13, 14, 15, 13, 12, 13, 14, 14, 13, 14, 15, 15, 14, 15, 16, 4,  3, 4,  5,  3,  2,  3,  4,
     4,  3,  4,  5,  5,  4,  5,  6,  5,  4,  5,  6,  4,  3,  4,  5,  5,  4, 5,  6,  6,  5,  6,  7,
     6,  5,  6,  7,  5,  4,  5,  6,  6,  5,  6,  7,  7,  6,  7,  8,  10, 9, 10, 11, 9,  8,  9,  10,
     10, 9,  10, 11, 11, 10, 11, 12, 3,  2,  3,  4,  2,  1,  2,  3,  3,  2, 3,  4,  4,  3,  4,  5,
     4,  3,  4,  5,  3,  2,  3,  4,  4,  3,  4,  5,  5,  4,  5,  6,  5,  4, 5,  6,  4,  3,  4,  5,
     5,  4,  5,  6,  6,  5,  6,  7,  9,  8,  9,  10, 8,  7,  8,  9,  9,  8, 9,  10, 10, 9,  10, 11,
     2,  1,  2,  3,  1,  0,  1,  2,  2,  1,  2,  3,  3,  2,  3,  4,  3,  2, 3,  4,  2,  1,  2,  3,
     3,  2,  3,  4,  4,  3,  4,  5,  4,  3,  4,  5,  3,  2,  3,  4,  4,  3, 4,  5,  5,  4,  5,  6,
     8,  7,  8,  9,  7,  6,  7,  8,  8,  7,  8,  9,  9,  8,  9,  10},
    {9,  8,  7,  8,  8,  7,  6,  7,  9,  8,  7,  8,  10, 9,  8,  9,  10, 9,  8, 9,  9,  8,  7,  8,
     10, 9,  8,  9,  11, 10, 9,  10, 11, 10, 9,  10, 10, 9,  8,  9,  11, 10, 9, 10, 12, 11, 10, 11,
     15, 14, 13, 14, 14, 13, 12, 13, 15, 14, 13, 14, 16, 15, 14, 15, 5,  4,  3, 4,  4,  3,  2,  3,
     5,  4,  3,  4,  6,  5,  4,  5,  6,  5,  4,  5,  5,  4,  3,  4,  6,  5,  4, 5,  7,  6,  5,  6,
     7,  6,  5,  6,  6,  5,  4,  5,  7,  6,  5,  6,  8,  7,  6,  7,  11, 10, 9, 10, 10, 9,  8,  9,
     11, 10, 9,  10, 12, 11, 10, 11, 4,  3,  2,  3,  3,  2,  1,  2,  4,  3,  2, 3,  5,  4,  3,  4,
     5,  4,  3,  4,  4,  3,  2,  3,  5,  4,  3,  4,  6,  5,  4,  5,  6,  5,  4, 5,  5,  4,  3,  4,
     6,  5,  4,  5,  7,  6,  5,  6,  10, 9,  8,  9,  9,  8,  7,  8,  10, 9,  8, 9,  11, 10, 9,  10,
     3,  2,  1,  2,  2,  1,  0,  1,  3,  2,  1,  2,  4,  3,  2,  3,  4,  3,  2, 3,  3,  2,  1,  2,
     4,  3,  2,  3,  5,  4,  3,  4,  5,  4,  3,  4,  4,  3,  2,  3,  5,  4,  3, 4,  6,  5,  4,  5,
     9,  8,  7,  8,  8,  7,  6,  7,  9,  8,  7,  8,  10, 9,  8,  9},
    {13, 9,  8,  7,  12, 8,  7,  6,  13, 9,  8,  7,  14, 10, 9,  8,  14, 10, 9,  8, 13, 9,  8,  7,
     14, 10, 9,  8,  15, 11, 10, 9,  15, 11, 10, 9,  14, 10, 9,  8,  15, 11, 10, 9, 16, 12, 11, 10,
     19, 15, 14, 13, 18, 14, 13, 12, 19, 15, 14, 13, 20, 16, 15, 14, 9,  5,  4,  3, 8,  4,  3,  2,
     9,  5,  4,  3,  10, 6,  5,  4,  10, 6,  5,  4,  9,  5,  4,  3,  10, 6,  5,  4, 11, 7,  6,  5,
     11, 7,  6,  5,  10, 6,  5,  4,  11, 7,  6,  5,  12, 8,  7,  6,  15, 11, 10, 9, 14, 10, 9,  8,
     15, 11, 10, 9,  16, 12, 11, 10, 8,  4,  3,  2,  7,  3,  2,  1,  8,  4,  3,  2, 9,  5,  4,  3,
     9,  5,  4,  3,  8,  4,  3,  2,  9,  5,  4,  3,  10, 6,  5,  4,  10, 6,  5,  4, 9,  5,  4,  3,
     10, 6,  5,  4,  11, 7,  6,  5,  14, 10, 9,  8,  13, 9,  8,  7,  14, 10, 9,  8, 15, 11, 10, 9,
     7,  3,  2,  1,  6,  2,  1,  0,  7,  3,  2,  1,  8,  4,  3,  2,  8,  4,  3,  2, 7,  3,  2,  1,
     8,  4,  3,  2,  9,  5,  4,  3,  9,  5,  4,  3,  8,  4,  3,  2,  9,  5,  4,  3, 10, 6,  5,  4,
     13, 9,  8,  7,  12, 8,  7,  6,  13, 9,  8,  7,  14, 10, 9,  8},
    {8,  9,  10, 14, 7,  8,  9,  13, 6,  7,  8,  12, 7,  8,  9,  13, 9,  10, 11, 15, 8, 9,  10, 14,
     7,  8,  9,  13, 8,  9,  10, 14, 10, 11, 12, 16, 9,  10, 11, 15, 8,  9,  10, 14, 9, 10, 11, 15,
     14, 15, 16, 20, 13, 14, 15, 19, 12, 13, 14, 18, 13, 14, 15, 19, 4,  5,  6,  10, 3, 4,  5,  9,
     2,  3,  4,  8,  3,  4,  5,  9,  5,  6,  7,  11, 4,  5,  6,  10, 3,  4,  5,  9,  4, 5,  6,  10,
     6,  7,  8,  12, 5,  6,  7,  11, 4,  5,  6,  10, 5,  6,  7,  11, 10, 11, 12, 16, 9, 10, 11, 15,
     8,  9,  10, 14, 9,  10, 11, 15, 3,  4,  5,  9,  2,  3,  4,  8,  1,  2,  3,  7,  2, 3,  4,  8,
     4,  5,  6,  10, 3,  4,  5,  9,  2,  3,  4,  8,  3,  4,  5,  9,  5,  6,  7,  11, 4, 5,  6,  10,
     3,  4,  5,  9,  4,  5,  6,  10, 9,  10, 11, 15, 8,  9,  10, 14, 7,  8,  9,  13, 8, 9,  10, 14,
     2,  3,  4,  8,  1,  2,  3,  7,  0,  1,  2,  6,  1,  2,  3,  7,  3,  4,  5,  9,  2, 3,  4,  8,
     1,  2,  3,  7,  2,  3,  4,  8,  4,  5,  6,  10, 3,  4,  5,  9,  2,  3,  4,  8,  3, 4,  5,  9,
     8,  9,  10, 14, 7,  8,  9,  13, 6,  7,  8,  12, 7,  8,  9,  13},
    {9,  8,  9,  10, 8,  7,  8,  9,  7,  6,  7,  8,  8,  7,  8,  9,  10, 9,  10, 11, 9,  8, 9,  10,
     8,  7,  8,  9,  9,  8,  9,  10, 11, 10, 11, 12, 10, 9,  10, 11, 9,  8,  9,  10, 10, 9, 10, 11,
     15, 14, 15, 16, 14, 13, 14, 15, 13, 12, 13, 14, 14, 13, 14, 15, 5,  4,  5,  6,  4,  3, 4,  5,
     3,  2,  3,  4,  4,  3,  4,  5,  6,  5,  6,  7,  5,  4,  5,  6,  4,  3,  4,  5,  5,  4, 5,  6,
     7,  6,  7,  8,  6,  5,  6,  7,  5,  4,  5,  6,  6,  5,  6,  7,  11, 10, 11, 12, 10, 9, 10, 11,
     9,  8,  9,  10, 10, 9,  10, 11, 4,  3,  4,  5,  3,  2,  3,  4,  2,  1,  2,  3,  3,  2, 3,  4,
     5,  4,  5,  6,  4,  3,  4,  5,  3,  2,  3,  4,  4,  3,  4,  5,  6,  5,  6,  7,  5,  4, 5,  6,
     4,  3,  4,  5,  5,  4,  5,  6,  10, 9,  10, 11, 9,  8,  9,  10, 8,  7,  8,  9,  9,  8, 9,  10,
     3,  2,  3,  4,  2,  1,  2,  3,  1,  0,  1,  2,  2,  1,  2,  3,  4,  3,  4,  5,  3,  2, 3,  4,
     2,  1,  2,  3,  3,  2,  3,  4,  5,  4,  5,  6,  4,  3,  4,  5,  3,  2,  3,  4,  4,  3, 4,  5,
     9,  8,  9,  10, 8,  7,  8,  9,  7,  6,  7,  8,  8,  7,  8,  9},
    {10, 9,  8,  9,  9,  8,  7,  8,  8,  7,  6,  7,  9,  8,  7,  8,  11, 10, 9,  10, 10, 9,  8, 9,
     9,  8,  7,  8,  10, 9,  8,  9,  12, 11, 10, 11, 11, 10, 9,  10, 10, 9,  8,  9,  11, 10, 9, 10,
     16, 15, 14, 15, 15, 14, 13, 14, 14, 13, 12, 13, 15, 14, 13, 14, 6,  5,  4,  5,  5,  4,  3, 4,
     4,  3,  2,  3,  5,  4,  3,  4,  7,  6,  5,  6,  6,  5,  4,  5,  5,  4,  3,  4,  6,  5,  4, 5,
     8,  7,  6,  7,  7,  6,  5,  6,  6,  5,  4,  5,  7,  6,  5,  6,  12, 11, 10, 11, 11, 10, 9, 10,
     10, 9,  8,  9,  11, 10, 9,  10, 5,  4,  3,  4,  4,  3,  2,  3,  3,  2,  1,  2,  4,  3,  2, 3,
     6,  5,  4,  5,  5,  4,  3,  4,  4,  3,  2,  3,  5,  4,  3,  4,  7,  6,  5,  6,  6,  5,  4, 5,
     5,  4,  3,  4,  6,  5,  4,  5,  11, 10, 9,  10, 10, 9,  8,  9,  9,  8,  7,  8,  10, 9,  8, 9,
     4,  3,  2,  3,  3,  2,  1,  2,  2,  1,  0,  1,  3,  2,  1,  2,  5,  4,  3,  4,  4,  3,  2, 3,
     3,  2,  1,  2,  4,  3,  2,  3,  6,  5,  4,  5,  5,  4,  3,  4,  4,  3,  2,  3,  5,  4,  3, 4,
     10, 9,  8,  9,  9,  8,  7,  8,  8,  7,  6,  7,  9,  8,  7,  8},
    {14, 10, 9,  8,  13, 9,  8,  7,  12, 8,  7,  6,  13, 9,  8,  7,  15, 11, 10, 9,  14, 10, 9,  8,
     13, 9,  8,  7,  14, 10, 9,  8,  16, 12, 11, 10, 15, 11, 10, 9,  14, 10, 9,  8,  15, 11, 10, 9,
     20, 16, 15, 14, 19, 15, 14, 13, 18, 14, 13, 12, 19, 15, 14, 13, 10, 6,  5,  4,  9,  5,  4,  3,
     8,  4,  3,  2,  9,  5,  4,  3,  11, 7,  6,  5,  10, 6,  5,  4,  9,  5,  4,  3,  10, 6,  5,  4,
     12, 8,  7,  6,  11, 7,  6,  5,  10, 6,  5,  4,  11, 7,  6,  5,  16, 12, 11, 10, 15, 11, 10, 9,
     14, 10, 9,  8,  15, 11, 10, 9,  9,  5,  4,  3,  8,  4,  3,  2,  7,  3,  2,  1,  8,  4,  3,  2,
     10, 6,  5,  4,  9,  5,  4,  3,  8,  4,  3,  2,  9,  5,  4,  3,  11, 7,  6,  5,  10, 6,  5,  4,
     9,  5,  4,  3,  10, 6,  5,  4,  15, 11, 10, 9,  14, 10, 9,  8,  13, 9,  8,  7,  14, 10, 9,  8,
     8,  4,  3,  2,  7,  3,  2,  1,  6,  2,  1,  0,  7,  3,  2,  1,  9,  5,  4,  3,  8,  4,  3,  2,
     7,  3,  2,  1,  8,  4,  3,  2,  10, 6,  5,  4,  9,  5,  4,  3,  8,  4,  3,  2,  9,  5,  4,  3,
     14, 10, 9,  8,  13, 9,  8,  7,  12, 8,  7,  6,  13, 9,  8,  7},
    {12, 13, 14, 18, 8,  9,  10, 14, 7,  8,  9,  13, 6,  7,  8,  12, 13, 14, 15, 19, 9,  10, 11, 15,
     8,  9,  10, 14, 7,  8,  9,  13, 14, 15, 16, 20, 10, 11, 12, 16, 9,  10, 11, 15, 8,  9,  10, 14,
     18, 19, 20, 24, 14, 15, 16, 20, 13, 14, 15, 19, 12, 13, 14, 18, 8,  9,  10, 14, 4,  5,  6,  10,
     3,  4,  5,  9,  2,  3,  4,  8,  9,  10, 11, 15, 5,  6,  7,  11, 4,  5,  6,  10, 3,  4,  5,  9,
     10, 11, 12, 16, 6,  7,  8,  12, 5,  6,  7,  11, 4,  5,  6,  10, 14, 15, 16, 20, 10, 11, 12, 16,
     9,  10, 11, 15, 8,  9,  10, 14, 7,  8,  9,  13, 3,  4,  5,  9,  2,  3,  4,  8,  1,  2,  3,  7,
     8,  9,  10, 14, 4,  5,  6,  10, 3,  4,  5,  9,  2,  3,  4,  8,  9,  10, 11, 15, 5,  6,  7,  11,
     4,  5,  6,  10, 3,  4,  5,  9,  13, 14, 15, 19, 9,  10, 11, 15, 8,  9,  10, 14, 7,  8,  9,  13,
     6,  7,  8,  12, 2,  3,  4,  8,  1,  2,  3,  7,  0,  1,  2,  6,  7,  8,  9,  13, 3,  4,  5,  9,
     2,  3,  4,  8,  1,  2,  3,  7,  8,  9,  10, 14, 4,  5,  6,  10, 3,  4,  5,  9,  2,  3,  4,  8,
     12, 13, 14, 18, 8,  9,  10, 14, 7,  8,  9,  13, 6,  7,  8,  12},
    {13, 12, 13, 14, 9,  8,  9,  10, 8,  7,  8,  9,  7,  6,  7,  8,  14, 13, 14, 15, 10, 9,  10, 11,
     9,  8,  9,  10, 8,  7,  8,  9,  15, 14, 15, 16, 11, 10, 11, 12, 10, 9,  10, 11, 9,  8,  9,  10,
     19, 18, 19, 20, 15, 14, 15, 16, 14, 13, 14, 15, 13, 12, 13, 14, 9,  8,  9,  10, 5,  4,  5,  6,
     4,  3,  4,  5,  3,  2,  3,  4,  10, 9,  10, 11, 6,  5,  6,  7,  5,  4,  5,  6,  4,  3,  4,  5,
     11, 10, 11, 12, 7,  6,  7,  8,  6,  5,  6,  7,  5,  4,  5,  6,  15, 14, 15, 16, 11, 10, 11, 12,
     10, 9,  10, 11, 9,  8,  9,  10, 8,  7,  8,  9,  4,  3,  4,  5,  3,  2,  3,  4,  2,  1,  2,  3,
     9,  8,  9,  10, 5,  4,  5,  6,  4,  3,  4,  5,  3,  2,  3,  4,  10, 9,  10, 11, 6,  5,  6,  7,
     5,  4,  5,  6,  4,  3,  4,  5,  14, 13, 14, 15, 10, 9,  10, 11, 9,  8,  9,  10, 8,  7,  8,  9,
     7,  6,  7,  8,  3,  2,  3,  4,  2,  1,  2,  3,  1,  0,  1,  2,  8,  7,  8,  9,  4,  3,  4,  5,
     3,  2,  3,  4,  2,  1,  2,  3,  9,  8,  9,  10, 5,  4,  5,  6,  4,  3,  4,  5,  3,  2,  3,  4,
     13, 12, 13, 14, 9,  8,  9,  10, 8,  7,  8,  9,  7,  6,  7,  8},
    {14, 13, 12, 13, 10, 9,  8,  9,  9,  8,  7,  8,  8,  7,  6,  7,  15, 14, 13, 14, 11, 10, 9,  10,
     10, 9,  8,  9,  9,  8,  7,  8,  16, 15, 14, 15, 12, 11, 10, 11, 11, 10, 9,  10, 10, 9,  8,  9,
     20, 19, 18, 19, 16, 15, 14, 15, 15, 14, 13, 14, 14, 13, 12, 13, 10, 9,  8,  9,  6,  5,  4,  5,
     5,  4,  3,  4,  4,  3,  2,  3,  11, 10, 9,  10, 7,  6,  5,  6,  6,  5,  4,  5,  5,  4,  3,  4,
     12, 11, 10, 11, 8,  7,  6,  7,  7,  6,  5,  6,  6,  5,  4,  5,  16, 15, 14, 15, 12, 11, 10, 11,
     11, 10, 9,  10, 10, 9,  8,  9,  9,  8,  7,  8,  5,  4,  3,  4,  4,  3,  2,  3,  3,  2,  1,  2,
     10, 9,  8,  9,  6,  5,  4,  5,  5,  4,  3,  4,  4,  3,  2,  3,  11, 10, 9,  10, 7,  6,  5,  6,
     6,  5,  4,  5,  5,  4,  3,  4,  15, 14, 13, 14, 11, 10, 9,  10, 10, 9,  8,  9,  9,  8,  7,  8,
     8,  7,  6,  7,  4,  3,  2,  3,  3,  2,  1,  2,  2,  1,  0,  1,  9,  8,  7,  8,  5,  4,  3,  4,
     4,  3,  2,  3,  3,  2,  1,  2,  10, 9,  8,  9,  6,  5,  4,  5,  5,  4,  3,  4,  4,  3,  2,  3,
     14, 13, 12, 13, 10, 9,  8,  9,  9,  8,  7,  8,  8,  7,  6,  7},
    {18, 14, 13, 12, 14, 10, 9,  8,  13, 9,  8,  7,  12, 8,  7,  6,  19, 15, 14, 13, 15, 11, 10, 9,
     14, 10, 9,  8,  13, 9,  8,  7,  20, 16, 15, 14, 16, 12, 11, 10, 15, 11, 10, 9,  14, 10, 9,  8,
     24, 20, 19, 18, 20, 16, 15, 14, 19, 15, 14, 13, 18, 14, 13, 12, 14, 10, 9,  8,  10, 6,  5,  4,
     9,  5,  4,  3,  8,  4,  3,  2,  15, 11, 10, 9,  11, 7,  6,  5,  10, 6,  5,  4,  9,  5,  4,  3,
     16, 12, 11, 10, 12, 8,  7,  6,  11, 7,  6,  5,  10, 6,  5,  4,  20, 16, 15, 14, 16, 12, 11, 10,
     15, 11, 10, 9,  14, 10, 9,  8,  13, 9,  8,  7,  9,  5,  4,  3,  8,  4,  3,  2,  7,  3,  2,  1,
     14, 10, 9,  8,  10, 6,  5,  4,  9,  5,  4,  3,  8,  4,  3,  2,  15, 11, 10, 9,  11, 7,  6,  5,
     10, 6,  5,  4,  9,  5,  4,  3,  19, 15, 14, 13, 15, 11, 10, 9,  14, 10, 9,  8,  13, 9,  8,  7,
     12, 8,  7,  6,  8,  4,  3,  2,  7,  3,  2,  1,  6,  2,  1,  0,  13, 9,  8,  7,  9,  5,  4,  3,
     8,  4,  3,  2,  7,  3,  2,  1,  14, 10, 9,  8,  10, 6,  5,  4,  9,  5,  4,  3,  8,  4,  3,  2,
     18, 14, 13, 12, 14, 10, 9,  8,  13, 9,  8,  7,  12, 8,  7,  6},
    {7, 8, 9,  13, 8,  9,  10, 14, 9,  10, 11, 15, 13, 14, 15, 19, 6, 7,  8,  12, 7,  8,  9,  13,
     8, 9, 10, 14, 12, 13, 14, 18, 7,  8,  9,  13, 8,  9,  10, 14, 9, 10, 11, 15, 13, 14, 15, 19,
     8, 9, 10, 14, 9,  10, 11, 15, 10, 11, 12, 16, 14, 15, 16, 20, 3, 4,  5,  9,  4,  5,  6,  10,
     5, 6, 7,  11, 9,  10, 11, 15, 2,  3,  4,  8,  3,  4,  5,  9,  4, 5,  6,  10, 8,  9,  10, 14,
     3, 4, 5,  9,  4,  5,  6,  10, 5,  6,  7,  11, 9,  10, 11, 15, 4, 5,  6,  10, 5,  6,  7,  11,
     6, 7, 8,  12, 10, 11, 12, 16, 2,  3,  4,  8,  3,  4,  5,  9,  4, 5,  6,  10, 8,  9,  10, 14,
     1, 2, 3,  7,  2,  3,  4,  8,  3,  4,  5,  9,  7,  8,  9,  13, 2, 3,  4,  8,  3,  4,  5,  9,
     4, 5, 6,  10, 8,  9,  10, 14, 3,  4,  5,  9,  4,  5,  6,  10, 5, 6,  7,  11, 9,  10, 11, 15,
     1, 2, 3,  7,  2,  3,  4,  8,  3,  4,  5,  9,  7,  8,  9,  13, 0, 1,  2,  6,  1,  2,  3,  7,
     2, 3, 4,  8,  6,  7,  8,  12, 1,  2,  3,  7,  2,  3,  4,  8,  3, 4,  5,  9,  7,  8,  9,  13,
     2, 3, 4,  8,  3,  4,  5,  9,  4,  5,  6,  10, 8,  9,  10, 14},
    {8, 7, 8, 9,  9,  8,  9,  10, 10, 9,  10, 11, 14, 13, 14, 15, 7,  6, 7,  8,  8,  7,  8,  9,
     9, 8, 9, 10, 13, 12, 13, 14, 8,  7,  8,  9,  9,  8,  9,  10, 10, 9, 10, 11, 14, 13, 14, 15,
     9, 8, 9, 10, 10, 9,  10, 11, 11, 10, 11, 12, 15, 14, 15, 16, 4,  3, 4,  5,  5,  4,  5,  6,
     6, 5, 6, 7,  10, 9,  10, 11, 3,  2,  3,  4,  4,  3,  4,  5,  5,  4, 5,  6,  9,  8,  9,  10,
     4, 3, 4, 5,  5,  4,  5,  6,  6,  5,  6,  7,  10, 9,  10, 11, 5,  4, 5,  6,  6,  5,  6,  7,
     7, 6, 7, 8,  11, 10, 11, 12, 3,  2,  3,  4,  4,  3,  4,  5,  5,  4, 5,  6,  9,  8,  9,  10,
     2, 1, 2, 3,  3,  2,  3,  4,  4,  3,  4,  5,  8,  7,  8,  9,  3,  2, 3,  4,  4,  3,  4,  5,
     5, 4, 5, 6,  9,  8,  9,  10, 4,  3,  4,  5,  5,  4,  5,  6,  6,  5, 6,  7,  10, 9,  10, 11,
     2, 1, 2, 3,  3,  2,  3,  4,  4,  3,  4,  5,  8,  7,  8,  9,  1,  0, 1,  2,  2,  1,  2,  3,
     3, 2, 3, 4,  7,  6,  7,  8,  2,  1,  2,  3,  3,  2,  3,  4,  4,  3, 4,  5,  8,  7,  8,  9,
     3, 2, 3, 4,  4,  3,  4,  5,  5,  4,  5,  6,  9,  8,  9,  10},
    {9,  8, 7, 8, 10, 9,  8,  9,  11, 10, 9,  10, 15, 14, 13, 14, 8,  7,  6, 7,  9,  8,  7,  8,
     10, 9, 8, 9, 14, 13, 12, 13, 9,  8,  7,  8,  10, 9,  8,  9,  11, 10, 9, 10, 15, 14, 13, 14,
     10, 9, 8, 9, 11, 10, 9,  10, 12, 11, 10, 11, 16, 15, 14, 15, 5,  4,  3, 4,  6,  5,  4,  5,
     7,  6, 5, 6, 11, 10, 9,  10, 4,  3,  2,  3,  5,  4,  3,  4,  6,  5,  4, 5,  10, 9,  8,  9,
     5,  4, 3, 4, 6,  5,  4,  5,  7,  6,  5,  6,  11, 10, 9,  10, 6,  5,  4, 5,  7,  6,  5,  6,
     8,  7, 6, 7, 12, 11, 10, 11, 4,  3,  2,  3,  5,  4,  3,  4,  6,  5,  4, 5,  10, 9,  8,  9,
     3,  2, 1, 2, 4,  3,  2,  3,  5,  4,  3,  4,  9,  8,  7,  8,  4,  3,  2, 3,  5,  4,  3,  4,
     6,  5, 4, 5, 10, 9,  8,  9,  5,  4,  3,  4,  6,  5,  4,  5,  7,  6,  5, 6,  11, 10, 9,  10,
     3,  2, 1, 2, 4,  3,  2,  3,  5,  4,  3,  4,  9,  8,  7,  8,  2,  1,  0, 1,  3,  2,  1,  2,
     4,  3, 2, 3, 8,  7,  6,  7,  3,  2,  1,  2,  4,  3,  2,  3,  5,  4,  3, 4,  9,  8,  7,  8,
     4,  3, 2, 3, 5,  4,  3,  4,  6,  5,  4,  5,  10, 9,  8,  9},
    {13, 9,  8, 7, 14, 10, 9,  8,  15, 11, 10, 9,  19, 15, 14, 13, 12, 8,  7,  6, 13, 9,  8,  7,
     14, 10, 9, 8, 18, 14, 13, 12, 13, 9,  8,  7,  14, 10, 9,  8,  15, 11, 10, 9, 19, 15, 14, 13,
     14, 10, 9, 8, 15, 11, 10, 9,  16, 12, 11, 10, 20, 16, 15, 14, 9,  5,  4,  3, 10, 6,  5,  4,
     11, 7,  6, 5, 15, 11, 10, 9,  8,  4,  3,  2,  9,  5,  4,  3,  10, 6,  5,  4, 14, 10, 9,  8,
     9,  5,  4, 3, 10, 6,  5,  4,  11, 7,  6,  5,  15, 11, 10, 9,  10, 6,  5,  4, 11, 7,  6,  5,
     12, 8,  7, 6, 16, 12, 11, 10, 8,  4,  3,  2,  9,  5,  4,  3,  10, 6,  5,  4, 14, 10, 9,  8,
     7,  3,  2, 1, 8,  4,  3,  2,  9,  5,  4,  3,  13, 9,  8,  7,  8,  4,  3,  2, 9,  5,  4,  3,
     10, 6,  5, 4, 14, 10, 9,  8,  9,  5,  4,  3,  10, 6,  5,  4,  11, 7,  6,  5, 15, 11, 10, 9,
     7,  3,  2, 1, 8,  4,  3,  2,  9,  5,  4,  3,  13, 9,  8,  7,  6,  2,  1,  0, 7,  3,  2,  1,
     8,  4,  3, 2, 12, 8,  7,  6,  7,  3,  2,  1,  8,  4,  3,  2,  9,  5,  4,  3, 13, 9,  8,  7,
     8,  4,  3, 2, 9,  5,  4,  3,  10, 6,  5,  4,  14, 10, 9,  8},
    {8, 9,  10, 14, 7, 8, 9,  13, 8, 9,  10, 14, 9,  10, 11, 15, 7, 8, 9,  13, 6, 7,  8,  12,
     7, 8,  9,  13, 8, 9, 10, 14, 8, 9,  10, 14, 7,  8,  9,  13, 8, 9, 10, 14, 9, 10, 11, 15,
     9, 10, 11, 15, 8, 9, 10, 14, 9, 10, 11, 15, 10, 11, 12, 16, 4, 5, 6,  10, 3, 4,  5,  9,
     4, 5,  6,  10, 5, 6, 7,  11, 3, 4,  5,  9,  2,  3,  4,  8,  3, 4, 5,  9,  4, 5,  6,  10,
     4, 5,  6,  10, 3, 4, 5,  9,  4, 5,  6,  10, 5,  6,  7,  11, 5, 6, 7,  11, 4, 5,  6,  10,
     5, 6,  7,  11, 6, 7, 8,  12, 3, 4,  5,  9,  2,  3,  4,  8,  3, 4, 5,  9,  4, 5,  6,  10,
     2, 3,  4,  8,  1, 2, 3,  7,  2, 3,  4,  8,  3,  4,  5,  9,  3, 4, 5,  9,  2, 3,  4,  8,
     3, 4,  5,  9,  4, 5, 6,  10, 4, 5,  6,  10, 3,  4,  5,  9,  4, 5, 6,  10, 5, 6,  7,  11,
     2, 3,  4,  8,  1, 2, 3,  7,  2, 3,  4,  8,  3,  4,  5,  9,  1, 2, 3,  7,  0, 1,  2,  6,
     1, 2,  3,  7,  2, 3, 4,  8,  2, 3,  4,  8,  1,  2,  3,  7,  2, 3, 4,  8,  3, 4,  5,  9,
     3, 4,  5,  9,  2, 3, 4,  8,  3, 4,  5,  9,  4,  5,  6,  10},
    {9,  8, 9,  10, 8, 7, 8, 9,  9,  8, 9,  10, 10, 9,  10, 11, 8, 7, 8, 9,  7,  6, 7,  8,
     8,  7, 8,  9,  9, 8, 9, 10, 9,  8, 9,  10, 8,  7,  8,  9,  9, 8, 9, 10, 10, 9, 10, 11,
     10, 9, 10, 11, 9, 8, 9, 10, 10, 9, 10, 11, 11, 10, 11, 12, 5, 4, 5, 6,  4,  3, 4,  5,
     5,  4, 5,  6,  6, 5, 6, 7,  4,  3, 4,  5,  3,  2,  3,  4,  4, 3, 4, 5,  5,  4, 5,  6,
     5,  4, 5,  6,  4, 3, 4, 5,  5,  4, 5,  6,  6,  5,  6,  7,  6, 5, 6, 7,  5,  4, 5,  6,
     6,  5, 6,  7,  7, 6, 7, 8,  4,  3, 4,  5,  3,  2,  3,  4,  4, 3, 4, 5,  5,  4, 5,  6,
     3,  2, 3,  4,  2, 1, 2, 3,  3,  2, 3,  4,  4,  3,  4,  5,  4, 3, 4, 5,  3,  2, 3,  4,
     4,  3, 4,  5,  5, 4, 5, 6,  5,  4, 5,  6,  4,  3,  4,  5,  5, 4, 5, 6,  6,  5, 6,  7,
     3,  2, 3,  4,  2, 1, 2, 3,  3,  2, 3,  4,  4,  3,  4,  5,  2, 1, 2, 3,  1,  0, 1,  2,
     2,  1, 2,  3,  3, 2, 3, 4,  3,  2, 3,  4,  2,  1,  2,  3,  3, 2, 3, 4,  4,  3, 4,  5,
     4,  3, 4,  5,  3, 2, 3, 4,  4,  3, 4,  5,  5,  4,  5,  6},
    {10, 9,  8, 9,  9,  8, 7, 8, 10, 9,  8, 9,  11, 10, 9,  10, 9,  8, 7, 8, 8,  7,  6, 7,
     9,  8,  7, 8,  10, 9, 8, 9, 10, 9,  8, 9,  9,  8,  7,  8,  10, 9, 8, 9, 11, 10, 9, 10,
     11, 10, 9, 10, 10, 9, 8, 9, 11, 10, 9, 10, 12, 11, 10, 11, 6,  5, 4, 5, 5,  4,  3, 4,
     6,  5,  4, 5,  7,  6, 5, 6, 5,  4,  3, 4,  4,  3,  2,  3,  5,  4, 3, 4, 6,  5,  4, 5,
     6,  5,  4, 5,  5,  4, 3, 4, 6,  5,  4, 5,  7,  6,  5,  6,  7,  6, 5, 6, 6,  5,  4, 5,
     7,  6,  5, 6,  8,  7, 6, 7, 5,  4,  3, 4,  4,  3,  2,  3,  5,  4, 3, 4, 6,  5,  4, 5,
     4,  3,  2, 3,  3,  2, 1, 2, 4,  3,  2, 3,  5,  4,  3,  4,  5,  4, 3, 4, 4,  3,  2, 3,
     5,  4,  3, 4,  6,  5, 4, 5, 6,  5,  4, 5,  5,  4,  3,  4,  6,  5, 4, 5, 7,  6,  5, 6,
     4,  3,  2, 3,  3,  2, 1, 2, 4,  3,  2, 3,  5,  4,  3,  4,  3,  2, 1, 2, 2,  1,  0, 1,
     3,  2,  1, 2,  4,  3, 2, 3, 4,  3,  2, 3,  3,  2,  1,  2,  4,  3, 2, 3, 5,  4,  3, 4,
     5,  4,  3, 4,  4,  3, 2, 3, 5,  4,  3, 4,  6,  5,  4,  5},
    {14, 10, 9,  8, 13, 9,  8, 7, 14, 10, 9,  8, 15, 11, 10, 9,  13, 9,  8, 7, 12, 8,  7,  6,
     13, 9,  8,  7, 14, 10, 9, 8, 14, 10, 9,  8, 13, 9,  8,  7,  14, 10, 9, 8, 15, 11, 10, 9,
     15, 11, 10, 9, 14, 10, 9, 8, 15, 11, 10, 9, 16, 12, 11, 10, 10, 6,  5, 4, 9,  5,  4,  3,
     10, 6,  5,  4, 11, 7,  6, 5, 9,  5,  4,  3, 8,  4,  3,  2,  9,  5,  4, 3, 10, 6,  5,  4,
     10, 6,  5,  4, 9,  5,  4, 3, 10, 6,  5,  4, 11, 7,  6,  5,  11, 7,  6, 5, 10, 6,  5,  4,
     11, 7,  6,  5, 12, 8,  7, 6, 9,  5,  4,  3, 8,  4,  3,  2,  9,  5,  4, 3, 10, 6,  5,  4,
     8,  4,  3,  2, 7,  3,  2, 1, 8,  4,  3,  2, 9,  5,  4,  3,  9,  5,  4, 3, 8,  4,  3,  2,
     9,  5,  4,  3, 10, 6,  5, 4, 10, 6,  5,  4, 9,  5,  4,  3,  10, 6,  5, 4, 11, 7,  6,  5,
     8,  4,  3,  2, 7,  3,  2, 1, 8,  4,  3,  2, 9,  5,  4,  3,  7,  3,  2, 1, 6,  2,  1,  0,
     7,  3,  2,  1, 8,  4,  3, 2, 8,  4,  3,  2, 7,  3,  2,  1,  8,  4,  3, 2, 9,  5,  4,  3,
     9,  5,  4,  3, 8,  4,  3, 2, 9,  5,  4,  3, 10, 6,  5,  4},
    {9,  10, 11, 15, 8, 9,  10, 14, 7, 8,  9,  13, 8, 9,  10, 14, 8, 9, 10, 14, 7, 8, 9,  13,
     6,  7,  8,  12, 7, 8,  9,  13, 9, 10, 11, 15, 8, 9,  10, 14, 7, 8, 9,  13, 8, 9, 10, 14,
     10, 11, 12, 16, 9, 10, 11, 15, 8, 9,  10, 14, 9, 10, 11, 15, 5, 6, 7,  11, 4, 5, 6,  10,
     3,  4,  5,  9,  4, 5,  6,  10, 4, 5,  6,  10, 3, 4,  5,  9,  2, 3, 4,  8,  3, 4, 5,  9,
     5,  6,  7,  11, 4, 5,  6,  10, 3, 4,  5,  9,  4, 5,  6,  10, 6, 7, 8,  12, 5, 6, 7,  11,
     4,  5,  6,  10, 5, 6,  7,  11, 4, 5,  6,  10, 3, 4,  5,  9,  2, 3, 4,  8,  3, 4, 5,  9,
     3,  4,  5,  9,  2, 3,  4,  8,  1, 2,  3,  7,  2, 3,  4,  8,  4, 5, 6,  10, 3, 4, 5,  9,
     2,  3,  4,  8,  3, 4,  5,  9,  5, 6,  7,  11, 4, 5,  6,  10, 3, 4, 5,  9,  4, 5, 6,  10,
     3,  4,  5,  9,  2, 3,  4,  8,  1, 2,  3,  7,  2, 3,  4,  8,  2, 3, 4,  8,  1, 2, 3,  7,
     0,  1,  2,  6,  1, 2,  3,  7,  3, 4,  5,  9,  2, 3,  4,  8,  1, 2, 3,  7,  2, 3, 4,  8,
     4,  5,  6,  10, 3, 4,  5,  9,  2, 3,  4,  8,  3, 4,  5,  9},
    {10, 9, 10, 11, 9, 8, 9,  10, 8,  7,  8,  9,  9, 8,  9, 10, 9, 8, 9, 10, 8, 7,  8,  9,  7,  6,
     7,  8, 8,  7,  8, 9, 10, 9,  10, 11, 9,  8,  9, 10, 8, 7,  8, 9, 9, 8,  9, 10, 11, 10, 11, 12,
     10, 9, 10, 11, 9, 8, 9,  10, 10, 9,  10, 11, 6, 5,  6, 7,  5, 4, 5, 6,  4, 3,  4,  5,  5,  4,
     5,  6, 5,  4,  5, 6, 4,  3,  4,  5,  3,  2,  3, 4,  4, 3,  4, 5, 6, 5,  6, 7,  5,  4,  5,  6,
     4,  3, 4,  5,  5, 4, 5,  6,  7,  6,  7,  8,  6, 5,  6, 7,  5, 4, 5, 6,  6, 5,  6,  7,  5,  4,
     5,  6, 4,  3,  4, 5, 3,  2,  3,  4,  4,  3,  4, 5,  4, 3,  4, 5, 3, 2,  3, 4,  2,  1,  2,  3,
     3,  2, 3,  4,  5, 4, 5,  6,  4,  3,  4,  5,  3, 2,  3, 4,  4, 3, 4, 5,  6, 5,  6,  7,  5,  4,
     5,  6, 4,  3,  4, 5, 5,  4,  5,  6,  4,  3,  4, 5,  3, 2,  3, 4, 2, 1,  2, 3,  3,  2,  3,  4,
     3,  2, 3,  4,  2, 1, 2,  3,  1,  0,  1,  2,  2, 1,  2, 3,  4, 3, 4, 5,  3, 2,  3,  4,  2,  1,
     2,  3, 3,  2,  3, 4, 5,  4,  5,  6,  4,  3,  4, 5,  3, 2,  3, 4, 4, 3,  4, 5},
    {11, 10, 9, 10, 10, 9, 8,  9,  9,  8,  7,  8,  10, 9, 8, 9, 10, 9, 8,  9, 9, 8, 7,  8,  8,  7,
     6,  7,  9, 8,  7,  8, 11, 10, 9,  10, 10, 9,  8,  9, 9, 8, 7,  8, 10, 9, 8, 9, 12, 11, 10, 11,
     11, 10, 9, 10, 10, 9, 8,  9,  11, 10, 9,  10, 7,  6, 5, 6, 6,  5, 4,  5, 5, 4, 3,  4,  6,  5,
     4,  5,  6, 5,  4,  5, 5,  4,  3,  4,  4,  3,  2,  3, 5, 4, 3,  4, 7,  6, 5, 6, 6,  5,  4,  5,
     5,  4,  3, 4,  6,  5, 4,  5,  8,  7,  6,  7,  7,  6, 5, 6, 6,  5, 4,  5, 7, 6, 5,  6,  6,  5,
     4,  5,  5, 4,  3,  4, 4,  3,  2,  3,  5,  4,  3,  4, 5, 4, 3,  4, 4,  3, 2, 3, 3,  2,  1,  2,
     4,  3,  2, 3,  6,  5, 4,  5,  5,  4,  3,  4,  4,  3, 2, 3, 5,  4, 3,  4, 7, 6, 5,  6,  6,  5,
     4,  5,  5, 4,  3,  4, 6,  5,  4,  5,  5,  4,  3,  4, 4, 3, 2,  3, 3,  2, 1, 2, 4,  3,  2,  3,
     4,  3,  2, 3,  3,  2, 1,  2,  2,  1,  0,  1,  3,  2, 1, 2, 5,  4, 3,  4, 4, 3, 2,  3,  3,  2,
     1,  2,  4, 3,  2,  3, 6,  5,  4,  5,  5,  4,  3,  4, 4, 3, 2,  3, 5,  4, 3, 4},
    {15, 11, 10, 9,  14, 10, 9,  8, 13, 9,  8,  7, 14, 10, 9,  8, 14, 10, 9, 8, 13, 9,  8, 7,
     12, 8,  7,  6,  13, 9,  8,  7, 15, 11, 10, 9, 14, 10, 9,  8, 13, 9,  8, 7, 14, 10, 9, 8,
     16, 12, 11, 10, 15, 11, 10, 9, 14, 10, 9,  8, 15, 11, 10, 9, 11, 7,  6, 5, 10, 6,  5, 4,
     9,  5,  4,  3,  10, 6,  5,  4, 10, 6,  5,  4, 9,  5,  4,  3, 8,  4,  3, 2, 9,  5,  4, 3,
     11, 7,  6,  5,  10, 6,  5,  4, 9,  5,  4,  3, 10, 6,  5,  4, 12, 8,  7, 6, 11, 7,  6, 5,
     10, 6,  5,  4,  11, 7,  6,  5, 10, 6,  5,  4, 9,  5,  4,  3, 8,  4,  3, 2, 9,  5,  4, 3,
     9,  5,  4,  3,  8,  4,  3,  2, 7,  3,  2,  1, 8,  4,  3,  2, 10, 6,  5, 4, 9,  5,  4, 3,
     8,  4,  3,  2,  9,  5,  4,  3, 11, 7,  6,  5, 10, 6,  5,  4, 9,  5,  4, 3, 10, 6,  5, 4,
     9,  5,  4,  3,  8,  4,  3,  2, 7,  3,  2,  1, 8,  4,  3,  2, 8,  4,  3, 2, 7,  3,  2, 1,
     6,  2,  1,  0,  7,  3,  2,  1, 9,  5,  4,  3, 8,  4,  3,  2, 7,  3,  2, 1, 8,  4,  3, 2,
     10, 6,  5,  4,  9,  5,  4,  3, 8,  4,  3,  2, 9,  5,  4,  3},
    {13, 14, 15, 19, 9,  10, 11, 15, 8,  9,  10, 14, 7, 8,  9,  13, 12, 13, 14, 18, 8, 9, 10, 14,
     7,  8,  9,  13, 6,  7,  8,  12, 13, 14, 15, 19, 9, 10, 11, 15, 8,  9,  10, 14, 7, 8, 9,  13,
     14, 15, 16, 20, 10, 11, 12, 16, 9,  10, 11, 15, 8, 9,  10, 14, 9,  10, 11, 15, 5, 6, 7,  11,
     4,  5,  6,  10, 3,  4,  5,  9,  8,  9,  10, 14, 4, 5,  6,  10, 3,  4,  5,  9,  2, 3, 4,  8,
     9,  10, 11, 15, 5,  6,  7,  11, 4,  5,  6,  10, 3, 4,  5,  9,  10, 11, 12, 16, 6, 7, 8,  12,
     5,  6,  7,  11, 4,  5,  6,  10, 8,  9,  10, 14, 4, 5,  6,  10, 3,  4,  5,  9,  2, 3, 4,  8,
     7,  8,  9,  13, 3,  4,  5,  9,  2,  3,  4,  8,  1, 2,  3,  7,  8,  9,  10, 14, 4, 5, 6,  10,
     3,  4,  5,  9,  2,  3,  4,  8,  9,  10, 11, 15, 5, 6,  7,  11, 4,  5,  6,  10, 3, 4, 5,  9,
     7,  8,  9,  13, 3,  4,  5,  9,  2,  3,  4,  8,  1, 2,  3,  7,  6,  7,  8,  12, 2, 3, 4,  8,
     1,  2,  3,  7,  0,  1,  2,  6,  7,  8,  9,  13, 3, 4,  5,  9,  2,  3,  4,  8,  1, 2, 3,  7,
     8,  9,  10, 14, 4,  5,  6,  10, 3,  4,  5,  9,  2, 3,  4,  8},
    {14, 13, 14, 15, 10, 9,  10, 11, 9,  8,  9,  10, 8,  7, 8,  9,  13, 12, 13, 14, 9, 8, 9, 10,
     8,  7,  8,  9,  7,  6,  7,  8,  14, 13, 14, 15, 10, 9, 10, 11, 9,  8,  9,  10, 8, 7, 8, 9,
     15, 14, 15, 16, 11, 10, 11, 12, 10, 9,  10, 11, 9,  8, 9,  10, 10, 9,  10, 11, 6, 5, 6, 7,
     5,  4,  5,  6,  4,  3,  4,  5,  9,  8,  9,  10, 5,  4, 5,  6,  4,  3,  4,  5,  3, 2, 3, 4,
     10, 9,  10, 11, 6,  5,  6,  7,  5,  4,  5,  6,  4,  3, 4,  5,  11, 10, 11, 12, 7, 6, 7, 8,
     6,  5,  6,  7,  5,  4,  5,  6,  9,  8,  9,  10, 5,  4, 5,  6,  4,  3,  4,  5,  3, 2, 3, 4,
     8,  7,  8,  9,  4,  3,  4,  5,  3,  2,  3,  4,  2,  1, 2,  3,  9,  8,  9,  10, 5, 4, 5, 6,
     4,  3,  4,  5,  3,  2,  3,  4,  10, 9,  10, 11, 6,  5, 6,  7,  5,  4,  5,  6,  4, 3, 4, 5,
     8,  7,  8,  9,  4,  3,  4,  5,  3,  2,  3,  4,  2,  1, 2,  3,  7,  6,  7,  8,  3, 2, 3, 4,
     2,  1,  2,  3,  1,  0,  1,  2,  8,  7,  8,  9,  4,  3, 4,  5,  3,  2,  3,  4,  2, 1, 2, 3,
     9,  8,  9,  10, 5,  4,  5,  6,  4,  3,  4,  5,  3,  2, 3,  4},
    {15, 14, 13, 14, 11, 10, 9,  10, 10, 9,  8,  9,  9,  8,  7, 8,  14, 13, 12, 13, 10, 9, 8, 9,
     9,  8,  7,  8,  8,  7,  6,  7,  15, 14, 13, 14, 11, 10, 9, 10, 10, 9,  8,  9,  9,  8, 7, 8,
     16, 15, 14, 15, 12, 11, 10, 11, 11, 10, 9,  10, 10, 9,  8, 9,  11, 10, 9,  10, 7,  6, 5, 6,
     6,  5,  4,  5,  5,  4,  3,  4,  10, 9,  8,  9,  6,  5,  4, 5,  5,  4,  3,  4,  4,  3, 2, 3,
     11, 10, 9,  10, 7,  6,  5,  6,  6,  5,  4,  5,  5,  4,  3, 4,  12, 11, 10, 11, 8,  7, 6, 7,
     7,  6,  5,  6,  6,  5,  4,  5,  10, 9,  8,  9,  6,  5,  4, 5,  5,  4,  3,  4,  4,  3, 2, 3,
     9,  8,  7,  8,  5,  4,  3,  4,  4,  3,  2,  3,  3,  2,  1, 2,  10, 9,  8,  9,  6,  5, 4, 5,
     5,  4,  3,  4,  4,  3,  2,  3,  11, 10, 9,  10, 7,  6,  5, 6,  6,  5,  4,  5,  5,  4, 3, 4,
     9,  8,  7,  8,  5,  4,  3,  4,  4,  3,  2,  3,  3,  2,  1, 2,  8,  7,  6,  7,  4,  3, 2, 3,
     3,  2,  1,  2,  2,  1,  0,  1,  9,  8,  7,  8,  5,  4,  3, 4,  4,  3,  2,  3,  3,  2, 1, 2,
     10, 9,  8,  9,  6,  5,  4,  5,  5,  4,  3,  4,  4,  3,  2, 3},
    {19, 15, 14, 13, 15, 11, 10, 9,  14, 10, 9,  8,  13, 9,  8,  7, 18, 14, 13, 12, 14, 10, 9, 8,
     13, 9,  8,  7,  12, 8,  7,  6,  19, 15, 14, 13, 15, 11, 10, 9, 14, 10, 9,  8,  13, 9,  8, 7,
     20, 16, 15, 14, 16, 12, 11, 10, 15, 11, 10, 9,  14, 10, 9,  8, 15, 11, 10, 9,  11, 7,  6, 5,
     10, 6,  5,  4,  9,  5,  4,  3,  14, 10, 9,  8,  10, 6,  5,  4, 9,  5,  4,  3,  8,  4,  3, 2,
     15, 11, 10, 9,  11, 7,  6,  5,  10, 6,  5,  4,  9,  5,  4,  3, 16, 12, 11, 10, 12, 8,  7, 6,
     11, 7,  6,  5,  10, 6,  5,  4,  14, 10, 9,  8,  10, 6,  5,  4, 9,  5,  4,  3,  8,  4,  3, 2,
     13, 9,  8,  7,  9,  5,  4,  3,  8,  4,  3,  2,  7,  3,  2,  1, 14, 10, 9,  8,  10, 6,  5, 4,
     9,  5,  4,  3,  8,  4,  3,  2,  15, 11, 10, 9,  11, 7,  6,  5, 10, 6,  5,  4,  9,  5,  4, 3,
     13, 9,  8,  7,  9,  5,  4,  3,  8,  4,  3,  2,  7,  3,  2,  1, 12, 8,  7,  6,  8,  4,  3, 2,
     7,  3,  2,  1,  6,  2,  1,  0,  13, 9,  8,  7,  9,  5,  4,  3, 8,  4,  3,  2,  7,  3,  2, 1,
     14, 10, 9,  8,  10, 6,  5,  4,  9,  5,  4,  3,  8,  4,  3,  2},
    {8, 9,  10, 14, 9,  10, 11, 15, 10, 11, 12, 16, 14, 15, 16, 20, 7, 8, 9,  13, 8,  9,  10, 14,
     9, 10, 11, 15, 13, 14, 15, 19, 6,  7,  8,  12, 7,  8,  9,  13, 8, 9, 10, 14, 12, 13, 14, 18,
     7, 8,  9,  13, 8,  9,  10, 14, 9,  10, 11, 15, 13, 14, 15, 19, 4, 5, 6,  10, 5,  6,  7,  11,
     6, 7,  8,  12, 10, 11, 12, 16, 3,  4,  5,  9,  4,  5,  6,  10, 5, 6, 7,  11, 9,  10, 11, 15,
     2, 3,  4,  8,  3,  4,  5,  9,  4,  5,  6,  10, 8,  9,  10, 14, 3, 4, 5,  9,  4,  5,  6,  10,
     5, 6,  7,  11, 9,  10, 11, 15, 3,  4,  5,  9,  4,  5,  6,  10, 5, 6, 7,  11, 9,  10, 11, 15,
     2, 3,  4,  8,  3,  4,  5,  9,  4,  5,  6,  10, 8,  9,  10, 14, 1, 2, 3,  7,  2,  3,  4,  8,
     3, 4,  5,  9,  7,  8,  9,  13, 2,  3,  4,  8,  3,  4,  5,  9,  4, 5, 6,  10, 8,  9,  10, 14,
     2, 3,  4,  8,  3,  4,  5,  9,  4,  5,  6,  10, 8,  9,  10, 14, 1, 2, 3,  7,  2,  3,  4,  8,
     3, 4,  5,  9,  7,  8,  9,  13, 0,  1,  2,  6,  1,  2,  3,  7,  2, 3, 4,  8,  6,  7,  8,  12,
     1, 2,  3,  7,  2,  3,  4,  8,  3,  4,  5,  9,  7,  8,  9,  13},
    {9,  8, 9,  10, 10, 9,  10, 11, 11, 10, 11, 12, 15, 14, 15, 16, 8, 7, 8, 9,  9,  8,  9,  10,
     10, 9, 10, 11, 14, 13, 14, 15, 7,  6,  7,  8,  8,  7,  8,  9,  9, 8, 9, 10, 13, 12, 13, 14,
     8,  7, 8,  9,  9,  8,  9,  10, 10, 9,  10, 11, 14, 13, 14, 15, 5, 4, 5, 6,  6,  5,  6,  7,
     7,  6, 7,  8,  11, 10, 11, 12, 4,  3,  4,  5,  5,  4,  5,  6,  6, 5, 6, 7,  10, 9,  10, 11,
     3,  2, 3,  4,  4,  3,  4,  5,  5,  4,  5,  6,  9,  8,  9,  10, 4, 3, 4, 5,  5,  4,  5,  6,
     6,  5, 6,  7,  10, 9,  10, 11, 4,  3,  4,  5,  5,  4,  5,  6,  6, 5, 6, 7,  10, 9,  10, 11,
     3,  2, 3,  4,  4,  3,  4,  5,  5,  4,  5,  6,  9,  8,  9,  10, 2, 1, 2, 3,  3,  2,  3,  4,
     4,  3, 4,  5,  8,  7,  8,  9,  3,  2,  3,  4,  4,  3,  4,  5,  5, 4, 5, 6,  9,  8,  9,  10,
     3,  2, 3,  4,  4,  3,  4,  5,  5,  4,  5,  6,  9,  8,  9,  10, 2, 1, 2, 3,  3,  2,  3,  4,
     4,  3, 4,  5,  8,  7,  8,  9,  1,  0,  1,  2,  2,  1,  2,  3,  3, 2, 3, 4,  7,  6,  7,  8,
     2,  1, 2,  3,  3,  2,  3,  4,  4,  3,  4,  5,  8,  7,  8,  9},
    {10, 9,  8, 9,  11, 10, 9,  10, 12, 11, 10, 11, 16, 15, 14, 15, 9,  8, 7, 8, 10, 9,  8,  9,
     11, 10, 9, 10, 15, 14, 13, 14, 8,  7,  6,  7,  9,  8,  7,  8,  10, 9, 8, 9, 14, 13, 12, 13,
     9,  8,  7, 8,  10, 9,  8,  9,  11, 10, 9,  10, 15, 14, 13, 14, 6,  5, 4, 5, 7,  6,  5,  6,
     8,  7,  6, 7,  12, 11, 10, 11, 5,  4,  3,  4,  6,  5,  4,  5,  7,  6, 5, 6, 11, 10, 9,  10,
     4,  3,  2, 3,  5,  4,  3,  4,  6,  5,  4,  5,  10, 9,  8,  9,  5,  4, 3, 4, 6,  5,  4,  5,
     7,  6,  5, 6,  11, 10, 9,  10, 5,  4,  3,  4,  6,  5,  4,  5,  7,  6, 5, 6, 11, 10, 9,  10,
     4,  3,  2, 3,  5,  4,  3,  4,  6,  5,  4,  5,  10, 9,  8,  9,  3,  2, 1, 2, 4,  3,  2,  3,
     5,  4,  3, 4,  9,  8,  7,  8,  4,  3,  2,  3,  5,  4,  3,  4,  6,  5, 4, 5, 10, 9,  8,  9,
     4,  3,  2, 3,  5,  4,  3,  4,  6,  5,  4,  5,  10, 9,  8,  9,  3,  2, 1, 2, 4,  3,  2,  3,
     5,  4,  3, 4,  9,  8,  7,  8,  2,  1,  0,  1,  3,  2,  1,  2,  4,  3, 2, 3, 8,  7,  6,  7,
     3,  2,  1, 2,  4,  3,  2,  3,  5,  4,  3,  4,  9,  8,  7,  8},
    {14, 10, 9,  8, 15, 11, 10, 9,  16, 12, 11, 10, 20, 16, 15, 14, 13, 9,  8, 7, 14, 10, 9,  8,
     15, 11, 10, 9, 19, 15, 14, 13, 12, 8,  7,  6,  13, 9,  8,  7,  14, 10, 9, 8, 18, 14, 13, 12,
     13, 9,  8,  7, 14, 10, 9,  8,  15, 11, 10, 9,  19, 15, 14, 13, 10, 6,  5, 4, 11, 7,  6,  5,
     12, 8,  7,  6, 16, 12, 11, 10, 9,  5,  4,  3,  10, 6,  5,  4,  11, 7,  6, 5, 15, 11, 10, 9,
     8,  4,  3,  2, 9,  5,  4,  3,  10, 6,  5,  4,  14, 10, 9,  8,  9,  5,  4, 3, 10, 6,  5,  4,
     11, 7,  6,  5, 15, 11, 10, 9,  9,  5,  4,  3,  10, 6,  5,  4,  11, 7,  6, 5, 15, 11, 10, 9,
     8,  4,  3,  2, 9,  5,  4,  3,  10, 6,  5,  4,  14, 10, 9,  8,  7,  3,  2, 1, 8,  4,  3,  2,
     9,  5,  4,  3, 13, 9,  8,  7,  8,  4,  3,  2,  9,  5,  4,  3,  10, 6,  5, 4, 14, 10, 9,  8,
     8,  4,  3,  2, 9,  5,  4,  3,  10, 6,  5,  4,  14, 10, 9,  8,  7,  3,  2, 1, 8,  4,  3,  2,
     9,  5,  4,  3, 13, 9,  8,  7,  6,  2,  1,  0,  7,  3,  2,  1,  8,  4,  3, 2, 12, 8,  7,  6,
     7,  3,  2,  1, 8,  4,  3,  2,  9,  5,  4,  3,  13, 9,  8,  7},
    {9, 10, 11, 15, 8, 9,  10, 14, 9, 10, 11, 15, 10, 11, 12, 16, 8, 9, 10, 14, 7, 8, 9,  13,
     8, 9,  10, 14, 9, 10, 11, 15, 7, 8,  9,  13, 6,  7,  8,  12, 7, 8, 9,  13, 8, 9, 10, 14,
     8, 9,  10, 14, 7, 8,  9,  13, 8, 9,  10, 14, 9,  10, 11, 15, 5, 6, 7,  11, 4, 5, 6,  10,
     5, 6,  7,  11, 6, 7,  8,  12, 4, 5,  6,  10, 3,  4,  5,  9,  4, 5, 6,  10, 5, 6, 7,  11,
     3, 4,  5,  9,  2, 3,  4,  8,  3, 4,  5,  9,  4,  5,  6,  10, 4, 5, 6,  10, 3, 4, 5,  9,
     4, 5,  6,  10, 5, 6,  7,  11, 4, 5,  6,  10, 3,  4,  5,  9,  4, 5, 6,  10, 5, 6, 7,  11,
     3, 4,  5,  9,  2, 3,  4,  8,  3, 4,  5,  9,  4,  5,  6,  10, 2, 3, 4,  8,  1, 2, 3,  7,
     2, 3,  4,  8,  3, 4,  5,  9,  3, 4,  5,  9,  2,  3,  4,  8,  3, 4, 5,  9,  4, 5, 6,  10,
     3, 4,  5,  9,  2, 3,  4,  8,  3, 4,  5,  9,  4,  5,  6,  10, 2, 3, 4,  8,  1, 2, 3,  7,
     2, 3,  4,  8,  3, 4,  5,  9,  1, 2,  3,  7,  0,  1,  2,  6,  1, 2, 3,  7,  2, 3, 4,  8,
     2, 3,  4,  8,  1, 2,  3,  7,  2, 3,  4,  8,  3,  4,  5,  9},
    {10, 9,  10, 11, 9,  8,  9, 10, 10, 9, 10, 11, 11, 10, 11, 12, 9, 8, 9, 10, 8, 7,  8, 9, 9, 8,
     9,  10, 10, 9,  10, 11, 8, 7,  8,  9, 7,  6,  7,  8,  8,  7,  8, 9, 9, 8,  9, 10, 9, 8, 9, 10,
     8,  7,  8,  9,  9,  8,  9, 10, 10, 9, 10, 11, 6,  5,  6,  7,  5, 4, 5, 6,  6, 5,  6, 7, 7, 6,
     7,  8,  5,  4,  5,  6,  4, 3,  4,  5, 5,  4,  5,  6,  6,  5,  6, 7, 4, 3,  4, 5,  3, 2, 3, 4,
     4,  3,  4,  5,  5,  4,  5, 6,  5,  4, 5,  6,  4,  3,  4,  5,  5, 4, 5, 6,  6, 5,  6, 7, 5, 4,
     5,  6,  4,  3,  4,  5,  5, 4,  5,  6, 6,  5,  6,  7,  4,  3,  4, 5, 3, 2,  3, 4,  4, 3, 4, 5,
     5,  4,  5,  6,  3,  2,  3, 4,  2,  1, 2,  3,  3,  2,  3,  4,  4, 3, 4, 5,  4, 3,  4, 5, 3, 2,
     3,  4,  4,  3,  4,  5,  5, 4,  5,  6, 4,  3,  4,  5,  3,  2,  3, 4, 4, 3,  4, 5,  5, 4, 5, 6,
     3,  2,  3,  4,  2,  1,  2, 3,  3,  2, 3,  4,  4,  3,  4,  5,  2, 1, 2, 3,  1, 0,  1, 2, 2, 1,
     2,  3,  3,  2,  3,  4,  3, 2,  3,  4, 2,  1,  2,  3,  3,  2,  3, 4, 4, 3,  4, 5},
    {11, 10, 9,  10, 10, 9,  8, 9, 11, 10, 9, 10, 12, 11, 10, 11, 10, 9, 8,  9, 9, 8, 7,  8, 10, 9,
     8,  9,  11, 10, 9,  10, 9, 8, 7,  8,  8, 7,  6,  7,  9,  8,  7,  8, 10, 9, 8, 9, 10, 9, 8,  9,
     9,  8,  7,  8,  10, 9,  8, 9, 11, 10, 9, 10, 7,  6,  5,  6,  6,  5, 4,  5, 7, 6, 5,  6, 8,  7,
     6,  7,  6,  5,  4,  5,  5, 4, 3,  4,  6, 5,  4,  5,  7,  6,  5,  6, 5,  4, 3, 4, 4,  3, 2,  3,
     5,  4,  3,  4,  6,  5,  4, 5, 6,  5,  4, 5,  5,  4,  3,  4,  6,  5, 4,  5, 7, 6, 5,  6, 6,  5,
     4,  5,  5,  4,  3,  4,  6, 5, 4,  5,  7, 6,  5,  6,  5,  4,  3,  4, 4,  3, 2, 3, 5,  4, 3,  4,
     6,  5,  4,  5,  4,  3,  2, 3, 3,  2,  1, 2,  4,  3,  2,  3,  5,  4, 3,  4, 5, 4, 3,  4, 4,  3,
     2,  3,  5,  4,  3,  4,  6, 5, 4,  5,  5, 4,  3,  4,  4,  3,  2,  3, 5,  4, 3, 4, 6,  5, 4,  5,
     4,  3,  2,  3,  3,  2,  1, 2, 4,  3,  2, 3,  5,  4,  3,  4,  3,  2, 1,  2, 2, 1, 0,  1, 3,  2,
     1,  2,  4,  3,  2,  3,  4, 3, 2,  3,  3, 2,  1,  2,  4,  3,  2,  3, 5,  4, 3, 4},
    {15, 11, 10, 9, 14, 10, 9,  8, 15, 11, 10, 9, 16, 12, 11, 10, 14, 10, 9, 8, 13, 9,  8, 7,
     14, 10, 9,  8, 15, 11, 10, 9, 13, 9,  8,  7, 12, 8,  7,  6,  13, 9,  8, 7, 14, 10, 9, 8,
     14, 10, 9,  8, 13, 9,  8,  7, 14, 10, 9,  8, 15, 11, 10, 9,  11, 7,  6, 5, 10, 6,  5, 4,
     11, 7,  6,  5, 12, 8,  7,  6, 10, 6,  5,  4, 9,  5,  4,  3,  10, 6,  5, 4, 11, 7,  6, 5,
     9,  5,  4,  3, 8,  4,  3,  2, 9,  5,  4,  3, 10, 6,  5,  4,  10, 6,  5, 4, 9,  5,  4, 3,
     10, 6,  5,  4, 11, 7,  6,  5, 10, 6,  5,  4, 9,  5,  4,  3,  10, 6,  5, 4, 11, 7,  6, 5,
     9,  5,  4,  3, 8,  4,  3,  2, 9,  5,  4,  3, 10, 6,  5,  4,  8,  4,  3, 2, 7,  3,  2, 1,
     8,  4,  3,  2, 9,  5,  4,  3, 9,  5,  4,  3, 8,  4,  3,  2,  9,  5,  4, 3, 10, 6,  5, 4,
     9,  5,  4,  3, 8,  4,  3,  2, 9,  5,  4,  3, 10, 6,  5,  4,  8,  4,  3, 2, 7,  3,  2, 1,
     8,  4,  3,  2, 9,  5,  4,  3, 7,  3,  2,  1, 6,  2,  1,  0,  7,  3,  2, 1, 8,  4,  3, 2,
     8,  4,  3,  2, 7,  3,  2,  1, 8,  4,  3,  2, 9,  5,  4,  3},
    {10, 11, 12, 16, 9, 10, 11, 15, 8, 9, 10, 14, 9, 10, 11, 15, 9, 10, 11, 15, 8, 9, 10, 14,
     7,  8,  9,  13, 8, 9,  10, 14, 8, 9, 10, 14, 7, 8,  9,  13, 6, 7,  8,  12, 7, 8, 9,  13,
     9,  10, 11, 15, 8, 9,  10, 14, 7, 8, 9,  13, 8, 9,  10, 14, 6, 7,  8,  12, 5, 6, 7,  11,
     4,  5,  6,  10, 5, 6,  7,  11, 5, 6, 7,  11, 4, 5,  6,  10, 3, 4,  5,  9,  4, 5, 6,  10,
     4,  5,  6,  10, 3, 4,  5,  9,  2, 3, 4,  8,  3, 4,  5,  9,  5, 6,  7,  11, 4, 5, 6,  10,
     3,  4,  5,  9,  4, 5,  6,  10, 5, 6, 7,  11, 4, 5,  6,  10, 3, 4,  5,  9,  4, 5, 6,  10,
     4,  5,  6,  10, 3, 4,  5,  9,  2, 3, 4,  8,  3, 4,  5,  9,  3, 4,  5,  9,  2, 3, 4,  8,
     1,  2,  3,  7,  2, 3,  4,  8,  4, 5, 6,  10, 3, 4,  5,  9,  2, 3,  4,  8,  3, 4, 5,  9,
     4,  5,  6,  10, 3, 4,  5,  9,  2, 3, 4,  8,  3, 4,  5,  9,  3, 4,  5,  9,  2, 3, 4,  8,
     1,  2,  3,  7,  2, 3,  4,  8,  2, 3, 4,  8,  1, 2,  3,  7,  0, 1,  2,  6,  1, 2, 3,  7,
     3,  4,  5,  9,  2, 3,  4,  8,  1, 2, 3,  7,  2, 3,  4,  8},
    {11, 10, 11, 12, 10, 9, 10, 11, 9, 8, 9, 10, 10, 9, 10, 11, 10, 9, 10, 11, 9, 8, 9, 10,
     8,  7,  8,  9,  9,  8, 9,  10, 9, 8, 9, 10, 8,  7, 8,  9,  7,  6, 7,  8,  8, 7, 8, 9,
     10, 9,  10, 11, 9,  8, 9,  10, 8, 7, 8, 9,  9,  8, 9,  10, 7,  6, 7,  8,  6, 5, 6, 7,
     5,  4,  5,  6,  6,  5, 6,  7,  6, 5, 6, 7,  5,  4, 5,  6,  4,  3, 4,  5,  5, 4, 5, 6,
     5,  4,  5,  6,  4,  3, 4,  5,  3, 2, 3, 4,  4,  3, 4,  5,  6,  5, 6,  7,  5, 4, 5, 6,
     4,  3,  4,  5,  5,  4, 5,  6,  6, 5, 6, 7,  5,  4, 5,  6,  4,  3, 4,  5,  5, 4, 5, 6,
     5,  4,  5,  6,  4,  3, 4,  5,  3, 2, 3, 4,  4,  3, 4,  5,  4,  3, 4,  5,  3, 2, 3, 4,
     2,  1,  2,  3,  3,  2, 3,  4,  5, 4, 5, 6,  4,  3, 4,  5,  3,  2, 3,  4,  4, 3, 4, 5,
     5,  4,  5,  6,  4,  3, 4,  5,  3, 2, 3, 4,  4,  3, 4,  5,  4,  3, 4,  5,  3, 2, 3, 4,
     2,  1,  2,  3,  3,  2, 3,  4,  3, 2, 3, 4,  2,  1, 2,  3,  1,  0, 1,  2,  2, 1, 2, 3,
     4,  3,  4,  5,  3,  2, 3,  4,  2, 1, 2, 3,  3,  2, 3,  4},
    {12, 11, 10, 11, 11, 10, 9, 10, 10, 9, 8, 9, 11, 10, 9, 10, 11, 10, 9, 10, 10, 9, 8, 9,
     9,  8,  7,  8,  10, 9,  8, 9,  10, 9, 8, 9, 9,  8,  7, 8,  8,  7,  6, 7,  9,  8, 7, 8,
     11, 10, 9,  10, 10, 9,  8, 9,  9,  8, 7, 8, 10, 9,  8, 9,  8,  7,  6, 7,  7,  6, 5, 6,
     6,  5,  4,  5,  7,  6,  5, 6,  7,  6, 5, 6, 6,  5,  4, 5,  5,  4,  3, 4,  6,  5, 4, 5,
     6,  5,  4,  5,  5,  4,  3, 4,  4,  3, 2, 3, 5,  4,  3, 4,  7,  6,  5, 6,  6,  5, 4, 5,
     5,  4,  3,  4,  6,  5,  4, 5,  7,  6, 5, 6, 6,  5,  4, 5,  5,  4,  3, 4,  6,  5, 4, 5,
     6,  5,  4,  5,  5,  4,  3, 4,  4,  3, 2, 3, 5,  4,  3, 4,  5,  4,  3, 4,  4,  3, 2, 3,
     3,  2,  1,  2,  4,  3,  2, 3,  6,  5, 4, 5, 5,  4,  3, 4,  4,  3,  2, 3,  5,  4, 3, 4,
     6,  5,  4,  5,  5,  4,  3, 4,  4,  3, 2, 3, 5,  4,  3, 4,  5,  4,  3, 4,  4,  3, 2, 3,
     3,  2,  1,  2,  4,  3,  2, 3,  4,  3, 2, 3, 3,  2,  1, 2,  2,  1,  0, 1,  3,  2, 1, 2,
     5,  4,  3,  4,  4,  3,  2, 3,  3,  2, 1, 2, 4,  3,  2, 3},
    {16, 12, 11, 10, 15, 11, 10, 9, 14, 10, 9, 8, 15, 11, 10, 9, 15, 11, 10, 9, 14, 10, 9, 8,
     13, 9,  8,  7,  14, 10, 9,  8, 14, 10, 9, 8, 13, 9,  8,  7, 12, 8,  7,  6, 13, 9,  8, 7,
     15, 11, 10, 9,  14, 10, 9,  8, 13, 9,  8, 7, 14, 10, 9,  8, 12, 8,  7,  6, 11, 7,  6, 5,
     10, 6,  5,  4,  11, 7,  6,  5, 11, 7,  6, 5, 10, 6,  5,  4, 9,  5,  4,  3, 10, 6,  5, 4,
     10, 6,  5,  4,  9,  5,  4,  3, 8,  4,  3, 2, 9,  5,  4,  3, 11, 7,  6,  5, 10, 6,  5, 4,
     9,  5,  4,  3,  10, 6,  5,  4, 11, 7,  6, 5, 10, 6,  5,  4, 9,  5,  4,  3, 10, 6,  5, 4,
     10, 6,  5,  4,  9,  5,  4,  3, 8,  4,  3, 2, 9,  5,  4,  3, 9,  5,  4,  3, 8,  4,  3, 2,
     7,  3,  2,  1,  8,  4,  3,  2, 10, 6,  5, 4, 9,  5,  4,  3, 8,  4,  3,  2, 9,  5,  4, 3,
     10, 6,  5,  4,  9,  5,  4,  3, 8,  4,  3, 2, 9,  5,  4,  3, 9,  5,  4,  3, 8,  4,  3, 2,
     7,  3,  2,  1,  8,  4,  3,  2, 8,  4,  3, 2, 7,  3,  2,  1, 6,  2,  1,  0, 7,  3,  2, 1,
     9,  5,  4,  3,  8,  4,  3,  2, 7,  3,  2, 1, 8,  4,  3,  2},
    {14, 15, 16, 20, 10, 11, 12, 16, 9,  10, 11, 15, 8, 9, 10, 14, 13, 14, 15, 19, 9, 10, 11, 15,
     8,  9,  10, 14, 7,  8,  9,  13, 12, 13, 14, 18, 8, 9, 10, 14, 7,  8,  9,  13, 6, 7,  8,  12,
     13, 14, 15, 19, 9,  10, 11, 15, 8,  9,  10, 14, 7, 8, 9,  13, 10, 11, 12, 16, 6, 7,  8,  12,
     5,  6,  7,  11, 4,  5,  6,  10, 9,  10, 11, 15, 5, 6, 7,  11, 4,  5,  6,  10, 3, 4,  5,  9,
     8,  9,  10, 14, 4,  5,  6,  10, 3,  4,  5,  9,  2, 3, 4,  8,  9,  10, 11, 15, 5, 6,  7,  11,
     4,  5,  6,  10, 3,  4,  5,  9,  9,  10, 11, 15, 5, 6, 7,  11, 4,  5,  6,  10, 3, 4,  5,  9,
     8,  9,  10, 14, 4,  5,  6,  10, 3,  4,  5,  9,  2, 3, 4,  8,  7,  8,  9,  13, 3, 4,  5,  9,
     2,  3,  4,  8,  1,  2,  3,  7,  8,  9,  10, 14, 4, 5, 6,  10, 3,  4,  5,  9,  2, 3,  4,  8,
     8,  9,  10, 14, 4,  5,  6,  10, 3,  4,  5,  9,  2, 3, 4,  8,  7,  8,  9,  13, 3, 4,  5,  9,
     2,  3,  4,  8,  1,  2,  3,  7,  6,  7,  8,  12, 2, 3, 4,  8,  1,  2,  3,  7,  0, 1,  2,  6,
     7,  8,  9,  13, 3,  4,  5,  9,  2,  3,  4,  8,  1, 2, 3,  7},
    {15, 14, 15, 16, 11, 10, 11, 12, 10, 9,  10, 11, 9, 8, 9, 10, 14, 13, 14, 15, 10, 9, 10, 11,
     9,  8,  9,  10, 8,  7,  8,  9,  13, 12, 13, 14, 9, 8, 9, 10, 8,  7,  8,  9,  7,  6, 7,  8,
     14, 13, 14, 15, 10, 9,  10, 11, 9,  8,  9,  10, 8, 7, 8, 9,  11, 10, 11, 12, 7,  6, 7,  8,
     6,  5,  6,  7,  5,  4,  5,  6,  10, 9,  10, 11, 6, 5, 6, 7,  5,  4,  5,  6,  4,  3, 4,  5,
     9,  8,  9,  10, 5,  4,  5,  6,  4,  3,  4,  5,  3, 2, 3, 4,  10, 9,  10, 11, 6,  5, 6,  7,
     5,  4,  5,  6,  4,  3,  4,  5,  10, 9,  10, 11, 6, 5, 6, 7,  5,  4,  5,  6,  4,  3, 4,  5,
     9,  8,  9,  10, 5,  4,  5,  6,  4,  3,  4,  5,  3, 2, 3, 4,  8,  7,  8,  9,  4,  3, 4,  5,
     3,  2,  3,  4,  2,  1,  2,  3,  9,  8,  9,  10, 5, 4, 5, 6,  4,  3,  4,  5,  3,  2, 3,  4,
     9,  8,  9,  10, 5,  4,  5,  6,  4,  3,  4,  5,  3, 2, 3, 4,  8,  7,  8,  9,  4,  3, 4,  5,
     3,  2,  3,  4,  2,  1,  2,  3,  7,  6,  7,  8,  3, 2, 3, 4,  2,  1,  2,  3,  1,  0, 1,  2,
     8,  7,  8,  9,  4,  3,  4,  5,  3,  2,  3,  4,  2, 1, 2, 3},
    {16, 15, 14, 15, 12, 11, 10, 11, 11, 10, 9,  10, 10, 9, 8, 9, 15, 14, 13, 14, 11, 10, 9, 10,
     10, 9,  8,  9,  9,  8,  7,  8,  14, 13, 12, 13, 10, 9, 8, 9, 9,  8,  7,  8,  8,  7,  6, 7,
     15, 14, 13, 14, 11, 10, 9,  10, 10, 9,  8,  9,  9,  8, 7, 8, 12, 11, 10, 11, 8,  7,  6, 7,
     7,  6,  5,  6,  6,  5,  4,  5,  11, 10, 9,  10, 7,  6, 5, 6, 6,  5,  4,  5,  5,  4,  3, 4,
     10, 9,  8,  9,  6,  5,  4,  5,  5,  4,  3,  4,  4,  3, 2, 3, 11, 10, 9,  10, 7,  6,  5, 6,
     6,  5,  4,  5,  5,  4,  3,  4,  11, 10, 9,  10, 7,  6, 5, 6, 6,  5,  4,  5,  5,  4,  3, 4,
     10, 9,  8,  9,  6,  5,  4,  5,  5,  4,  3,  4,  4,  3, 2, 3, 9,  8,  7,  8,  5,  4,  3, 4,
     4,  3,  2,  3,  3,  2,  1,  2,  10, 9,  8,  9,  6,  5, 4, 5, 5,  4,  3,  4,  4,  3,  2, 3,
     10, 9,  8,  9,  6,  5,  4,  5,  5,  4,  3,  4,  4,  3, 2, 3, 9,  8,  7,  8,  5,  4,  3, 4,
     4,  3,  2,  3,  3,  2,  1,  2,  8,  7,  6,  7,  4,  3, 2, 3, 3,  2,  1,  2,  2,  1,  0, 1,
     9,  8,  7,  8,  5,  4,  3,  4,  4,  3,  2,  3,  3,  2, 1, 2},
    {20, 16, 15, 14, 16, 12, 11, 10, 15, 11, 10, 9,  14, 10, 9, 8, 19, 15, 14, 13, 15, 11, 10, 9,
     14, 10, 9,  8,  13, 9,  8,  7,  18, 14, 13, 12, 14, 10, 9, 8, 13, 9,  8,  7,  12, 8,  7,  6,
     19, 15, 14, 13, 15, 11, 10, 9,  14, 10, 9,  8,  13, 9,  8, 7, 16, 12, 11, 10, 12, 8,  7,  6,
     11, 7,  6,  5,  10, 6,  5,  4,  15, 11, 10, 9,  11, 7,  6, 5, 10, 6,  5,  4,  9,  5,  4,  3,
     14, 10, 9,  8,  10, 6,  5,  4,  9,  5,  4,  3,  8,  4,  3, 2, 15, 11, 10, 9,  11, 7,  6,  5,
     10, 6,  5,  4,  9,  5,  4,  3,  15, 11, 10, 9,  11, 7,  6, 5, 10, 6,  5,  4,  9,  5,  4,  3,
     14, 10, 9,  8,  10, 6,  5,  4,  9,  5,  4,  3,  8,  4,  3, 2, 13, 9,  8,  7,  9,  5,  4,  3,
     8,  4,  3,  2,  7,  3,  2,  1,  14, 10, 9,  8,  10, 6,  5, 4, 9,  5,  4,  3,  8,  4,  3,  2,
     14, 10, 9,  8,  10, 6,  5,  4,  9,  5,  4,  3,  8,  4,  3, 2, 13, 9,  8,  7,  9,  5,  4,  3,
     8,  4,  3,  2,  7,  3,  2,  1,  12, 8,  7,  6,  8,  4,  3, 2, 7,  3,  2,  1,  6,  2,  1,  0,
     13, 9,  8,  7,  9,  5,  4,  3,  8,  4,  3,  2,  7,  3,  2, 1},
    {12, 13, 14, 18, 13, 14, 15, 19, 14, 15, 16, 20, 18, 19, 20, 24, 8, 9,  10, 14, 9,  10, 11, 15,
     10, 11, 12, 16, 14, 15, 16, 20, 7,  8,  9,  13, 8,  9,  10, 14, 9, 10, 11, 15, 13, 14, 15, 19,
     6,  7,  8,  12, 7,  8,  9,  13, 8,  9,  10, 14, 12, 13, 14, 18, 8, 9,  10, 14, 9,  10, 11, 15,
     10, 11, 12, 16, 14, 15, 16, 20, 4,  5,  6,  10, 5,  6,  7,  11, 6, 7,  8,  12, 10, 11, 12, 16,
     3,  4,  5,  9,  4,  5,  6,  10, 5,  6,  7,  11, 9,  10, 11, 15, 2, 3,  4,  8,  3,  4,  5,  9,
     4,  5,  6,  10, 8,  9,  10, 14, 7,  8,  9,  13, 8,  9,  10, 14, 9, 10, 11, 15, 13, 14, 15, 19,
     3,  4,  5,  9,  4,  5,  6,  10, 5,  6,  7,  11, 9,  10, 11, 15, 2, 3,  4,  8,  3,  4,  5,  9,
     4,  5,  6,  10, 8,  9,  10, 14, 1,  2,  3,  7,  2,  3,  4,  8,  3, 4,  5,  9,  7,  8,  9,  13,
     6,  7,  8,  12, 7,  8,  9,  13, 8,  9,  10, 14, 12, 13, 14, 18, 2, 3,  4,  8,  3,  4,  5,  9,
     4,  5,  6,  10, 8,  9,  10, 14, 1,  2,  3,  7,  2,  3,  4,  8,  3, 4,  5,  9,  7,  8,  9,  13,
     0,  1,  2,  6,  1,  2,  3,  7,  2,  3,  4,  8,  6,  7,  8,  12},
    {13, 12, 13, 14, 14, 13, 14, 15, 15, 14, 15, 16, 19, 18, 19, 20, 9,  8, 9,  10, 10, 9,  10, 11,
     11, 10, 11, 12, 15, 14, 15, 16, 8,  7,  8,  9,  9,  8,  9,  10, 10, 9, 10, 11, 14, 13, 14, 15,
     7,  6,  7,  8,  8,  7,  8,  9,  9,  8,  9,  10, 13, 12, 13, 14, 9,  8, 9,  10, 10, 9,  10, 11,
     11, 10, 11, 12, 15, 14, 15, 16, 5,  4,  5,  6,  6,  5,  6,  7,  7,  6, 7,  8,  11, 10, 11, 12,
     4,  3,  4,  5,  5,  4,  5,  6,  6,  5,  6,  7,  10, 9,  10, 11, 3,  2, 3,  4,  4,  3,  4,  5,
     5,  4,  5,  6,  9,  8,  9,  10, 8,  7,  8,  9,  9,  8,  9,  10, 10, 9, 10, 11, 14, 13, 14, 15,
     4,  3,  4,  5,  5,  4,  5,  6,  6,  5,  6,  7,  10, 9,  10, 11, 3,  2, 3,  4,  4,  3,  4,  5,
     5,  4,  5,  6,  9,  8,  9,  10, 2,  1,  2,  3,  3,  2,  3,  4,  4,  3, 4,  5,  8,  7,  8,  9,
     7,  6,  7,  8,  8,  7,  8,  9,  9,  8,  9,  10, 13, 12, 13, 14, 3,  2, 3,  4,  4,  3,  4,  5,
     5,  4,  5,  6,  9,  8,  9,  10, 2,  1,  2,  3,  3,  2,  3,  4,  4,  3, 4,  5,  8,  7,  8,  9,
     1,  0,  1,  2,  2,  1,  2,  3,  3,  2,  3,  4,  7,  6,  7,  8},
    {14, 13, 12, 13, 15, 14, 13, 14, 16, 15, 14, 15, 20, 19, 18, 19, 10, 9,  8, 9,  11, 10, 9,  10,
     12, 11, 10, 11, 16, 15, 14, 15, 9,  8,  7,  8,  10, 9,  8,  9,  11, 10, 9, 10, 15, 14, 13, 14,
     8,  7,  6,  7,  9,  8,  7,  8,  10, 9,  8,  9,  14, 13, 12, 13, 10, 9,  8, 9,  11, 10, 9,  10,
     12, 11, 10, 11, 16, 15, 14, 15, 6,  5,  4,  5,  7,  6,  5,  6,  8,  7,  6, 7,  12, 11, 10, 11,
     5,  4,  3,  4,  6,  5,  4,  5,  7,  6,  5,  6,  11, 10, 9,  10, 4,  3,  2, 3,  5,  4,  3,  4,
     6,  5,  4,  5,  10, 9,  8,  9,  9,  8,  7,  8,  10, 9,  8,  9,  11, 10, 9, 10, 15, 14, 13, 14,
     5,  4,  3,  4,  6,  5,  4,  5,  7,  6,  5,  6,  11, 10, 9,  10, 4,  3,  2, 3,  5,  4,  3,  4,
     6,  5,  4,  5,  10, 9,  8,  9,  3,  2,  1,  2,  4,  3,  2,  3,  5,  4,  3, 4,  9,  8,  7,  8,
     8,  7,  6,  7,  9,  8,  7,  8,  10, 9,  8,  9,  14, 13, 12, 13, 4,  3,  2, 3,  5,  4,  3,  4,
     6,  5,  4,  5,  10, 9,  8,  9,  3,  2,  1,  2,  4,  3,  2,  3,  5,  4,  3, 4,  9,  8,  7,  8,
     2,  1,  0,  1,  3,  2,  1,  2,  4,  3,  2,  3,  8,  7,  6,  7},
    {18, 14, 13, 12, 19, 15, 14, 13, 20, 16, 15, 14, 24, 20, 19, 18, 14, 10, 9,  8, 15, 11, 10, 9,
     16, 12, 11, 10, 20, 16, 15, 14, 13, 9,  8,  7,  14, 10, 9,  8,  15, 11, 10, 9, 19, 15, 14, 13,
     12, 8,  7,  6,  13, 9,  8,  7,  14, 10, 9,  8,  18, 14, 13, 12, 14, 10, 9,  8, 15, 11, 10, 9,
     16, 12, 11, 10, 20, 16, 15, 14, 10, 6,  5,  4,  11, 7,  6,  5,  12, 8,  7,  6, 16, 12, 11, 10,
     9,  5,  4,  3,  10, 6,  5,  4,  11, 7,  6,  5,  15, 11, 10, 9,  8,  4,  3,  2, 9,  5,  4,  3,
     10, 6,  5,  4,  14, 10, 9,  8,  13, 9,  8,  7,  14, 10, 9,  8,  15, 11, 10, 9, 19, 15, 14, 13,
     9,  5,  4,  3,  10, 6,  5,  4,  11, 7,  6,  5,  15, 11, 10, 9,  8,  4,  3,  2, 9,  5,  4,  3,
     10, 6,  5,  4,  14, 10, 9,  8,  7,  3,  2,  1,  8,  4,  3,  2,  9,  5,  4,  3, 13, 9,  8,  7,
     12, 8,  7,  6,  13, 9,  8,  7,  14, 10, 9,  8,  18, 14, 13, 12, 8,  4,  3,  2, 9,  5,  4,  3,
     10, 6,  5,  4,  14, 10, 9,  8,  7,  3,  2,  1,  8,  4,  3,  2,  9,  5,  4,  3, 13, 9,  8,  7,
     6,  2,  1,  0,  7,  3,  2,  1,  8,  4,  3,  2,  12, 8,  7,  6},
    {13, 14, 15, 19, 12, 13, 14, 18, 13, 14, 15, 19, 14, 15, 16, 20, 9, 10, 11, 15, 8, 9,  10, 14,
     9,  10, 11, 15, 10, 11, 12, 16, 8,  9,  10, 14, 7,  8,  9,  13, 8, 9,  10, 14, 9, 10, 11, 15,
     7,  8,  9,  13, 6,  7,  8,  12, 7,  8,  9,  13, 8,  9,  10, 14, 9, 10, 11, 15, 8, 9,  10, 14,
     9,  10, 11, 15, 10, 11, 12, 16, 5,  6,  7,  11, 4,  5,  6,  10, 5, 6,  7,  11, 6, 7,  8,  12,
     4,  5,  6,  10, 3,  4,  5,  9,  4,  5,  6,  10, 5,  6,  7,  11, 3, 4,  5,  9,  2, 3,  4,  8,
     3,  4,  5,  9,  4,  5,  6,  10, 8,  9,  10, 14, 7,  8,  9,  13, 8, 9,  10, 14, 9, 10, 11, 15,
     4,  5,  6,  10, 3,  4,  5,  9,  4,  5,  6,  10, 5,  6,  7,  11, 3, 4,  5,  9,  2, 3,  4,  8,
     3,  4,  5,  9,  4,  5,  6,  10, 2,  3,  4,  8,  1,  2,  3,  7,  2, 3,  4,  8,  3, 4,  5,  9,
     7,  8,  9,  13, 6,  7,  8,  12, 7,  8,  9,  13, 8,  9,  10, 14, 3, 4,  5,  9,  2, 3,  4,  8,
     3,  4,  5,  9,  4,  5,  6,  10, 2,  3,  4,  8,  1,  2,  3,  7,  2, 3,  4,  8,  3, 4,  5,  9,
     1,  2,  3,  7,  0,  1,  2,  6,  1,  2,  3,  7,  2,  3,  4,  8},
    {14, 13, 14, 15, 13, 12, 13, 14, 14, 13, 14, 15, 15, 14, 15, 16, 10, 9, 10, 11, 9,  8, 9,  10,
     10, 9,  10, 11, 11, 10, 11, 12, 9,  8,  9,  10, 8,  7,  8,  9,  9,  8, 9,  10, 10, 9, 10, 11,
     8,  7,  8,  9,  7,  6,  7,  8,  8,  7,  8,  9,  9,  8,  9,  10, 10, 9, 10, 11, 9,  8, 9,  10,
     10, 9,  10, 11, 11, 10, 11, 12, 6,  5,  6,  7,  5,  4,  5,  6,  6,  5, 6,  7,  7,  6, 7,  8,
     5,  4,  5,  6,  4,  3,  4,  5,  5,  4,  5,  6,  6,  5,  6,  7,  4,  3, 4,  5,  3,  2, 3,  4,
     4,  3,  4,  5,  5,  4,  5,  6,  9,  8,  9,  10, 8,  7,  8,  9,  9,  8, 9,  10, 10, 9, 10, 11,
     5,  4,  5,  6,  4,  3,  4,  5,  5,  4,  5,  6,  6,  5,  6,  7,  4,  3, 4,  5,  3,  2, 3,  4,
     4,  3,  4,  5,  5,  4,  5,  6,  3,  2,  3,  4,  2,  1,  2,  3,  3,  2, 3,  4,  4,  3, 4,  5,
     8,  7,  8,  9,  7,  6,  7,  8,  8,  7,  8,  9,  9,  8,  9,  10, 4,  3, 4,  5,  3,  2, 3,  4,
     4,  3,  4,  5,  5,  4,  5,  6,  3,  2,  3,  4,  2,  1,  2,  3,  3,  2, 3,  4,  4,  3, 4,  5,
     2,  1,  2,  3,  1,  0,  1,  2,  2,  1,  2,  3,  3,  2,  3,  4},
    {15, 14, 13, 14, 14, 13, 12, 13, 15, 14, 13, 14, 16, 15, 14, 15, 11, 10, 9, 10, 10, 9,  8, 9,
     11, 10, 9,  10, 12, 11, 10, 11, 10, 9,  8,  9,  9,  8,  7,  8,  10, 9,  8, 9,  11, 10, 9, 10,
     9,  8,  7,  8,  8,  7,  6,  7,  9,  8,  7,  8,  10, 9,  8,  9,  11, 10, 9, 10, 10, 9,  8, 9,
     11, 10, 9,  10, 12, 11, 10, 11, 7,  6,  5,  6,  6,  5,  4,  5,  7,  6,  5, 6,  8,  7,  6, 7,
     6,  5,  4,  5,  5,  4,  3,  4,  6,  5,  4,  5,  7,  6,  5,  6,  5,  4,  3, 4,  4,  3,  2, 3,
     5,  4,  3,  4,  6,  5,  4,  5,  10, 9,  8,  9,  9,  8,  7,  8,  10, 9,  8, 9,  11, 10, 9, 10,
     6,  5,  4,  5,  5,  4,  3,  4,  6,  5,  4,  5,  7,  6,  5,  6,  5,  4,  3, 4,  4,  3,  2, 3,
     5,  4,  3,  4,  6,  5,  4,  5,  4,  3,  2,  3,  3,  2,  1,  2,  4,  3,  2, 3,  5,  4,  3, 4,
     9,  8,  7,  8,  8,  7,  6,  7,  9,  8,  7,  8,  10, 9,  8,  9,  5,  4,  3, 4,  4,  3,  2, 3,
     5,  4,  3,  4,  6,  5,  4,  5,  4,  3,  2,  3,  3,  2,  1,  2,  4,  3,  2, 3,  5,  4,  3, 4,
     3,  2,  1,  2,  2,  1,  0,  1,  3,  2,  1,  2,  4,  3,  2,  3},
    {19, 15, 14, 13, 18, 14, 13, 12, 19, 15, 14, 13, 20, 16, 15, 14, 15, 11, 10, 9, 14, 10, 9,  8,
     15, 11, 10, 9,  16, 12, 11, 10, 14, 10, 9,  8,  13, 9,  8,  7,  14, 10, 9,  8, 15, 11, 10, 9,
     13, 9,  8,  7,  12, 8,  7,  6,  13, 9,  8,  7,  14, 10, 9,  8,  15, 11, 10, 9, 14, 10, 9,  8,
     15, 11, 10, 9,  16, 12, 11, 10, 11, 7,  6,  5,  10, 6,  5,  4,  11, 7,  6,  5, 12, 8,  7,  6,
     10, 6,  5,  4,  9,  5,  4,  3,  10, 6,  5,  4,  11, 7,  6,  5,  9,  5,  4,  3, 8,  4,  3,  2,
     9,  5,  4,  3,  10, 6,  5,  4,  14, 10, 9,  8,  13, 9,  8,  7,  14, 10, 9,  8, 15, 11, 10, 9,
     10, 6,  5,  4,  9,  5,  4,  3,  10, 6,  5,  4,  11, 7,  6,  5,  9,  5,  4,  3, 8,  4,  3,  2,
     9,  5,  4,  3,  10, 6,  5,  4,  8,  4,  3,  2,  7,  3,  2,  1,  8,  4,  3,  2, 9,  5,  4,  3,
     13, 9,  8,  7,  12, 8,  7,  6,  13, 9,  8,  7,  14, 10, 9,  8,  9,  5,  4,  3, 8,  4,  3,  2,
     9,  5,  4,  3,  10, 6,  5,  4,  8,  4,  3,  2,  7,  3,  2,  1,  8,  4,  3,  2, 9,  5,  4,  3,
     7,  3,  2,  1,  6,  2,  1,  0,  7,  3,  2,  1,  8,  4,  3,  2},
    {14, 15, 16, 20, 13, 14, 15, 19, 12, 13, 14, 18, 13, 14, 15, 19, 10, 11, 12, 16, 9, 10, 11, 15,
     8,  9,  10, 14, 9,  10, 11, 15, 9,  10, 11, 15, 8,  9,  10, 14, 7,  8,  9,  13, 8, 9,  10, 14,
     8,  9,  10, 14, 7,  8,  9,  13, 6,  7,  8,  12, 7,  8,  9,  13, 10, 11, 12, 16, 9, 10, 11, 15,
     8,  9,  10, 14, 9,  10, 11, 15, 6,  7,  8,  12, 5,  6,  7,  11, 4,  5,  6,  10, 5, 6,  7,  11,
     5,  6,  7,  11, 4,  5,  6,  10, 3,  4,  5,  9,  4,  5,  6,  10, 4,  5,  6,  10, 3, 4,  5,  9,
     2,  3,  4,  8,  3,  4,  5,  9,  9,  10, 11, 15, 8,  9,  10, 14, 7,  8,  9,  13, 8, 9,  10, 14,
     5,  6,  7,  11, 4,  5,  6,  10, 3,  4,  5,  9,  4,  5,  6,  10, 4,  5,  6,  10, 3, 4,  5,  9,
     2,  3,  4,  8,  3,  4,  5,  9,  3,  4,  5,  9,  2,  3,  4,  8,  1,  2,  3,  7,  2, 3,  4,  8,
     8,  9,  10, 14, 7,  8,  9,  13, 6,  7,  8,  12, 7,  8,  9,  13, 4,  5,  6,  10, 3, 4,  5,  9,
     2,  3,  4,  8,  3,  4,  5,  9,  3,  4,  5,  9,  2,  3,  4,  8,  1,  2,  3,  7,  2, 3,  4,  8,
     2,  3,  4,  8,  1,  2,  3,  7,  0,  1,  2,  6,  1,  2,  3,  7},
    {15, 14, 15, 16, 14, 13, 14, 15, 13, 12, 13, 14, 14, 13, 14, 15, 11, 10, 11, 12, 10, 9, 10, 11,
     9,  8,  9,  10, 10, 9,  10, 11, 10, 9,  10, 11, 9,  8,  9,  10, 8,  7,  8,  9,  9,  8, 9,  10,
     9,  8,  9,  10, 8,  7,  8,  9,  7,  6,  7,  8,  8,  7,  8,  9,  11, 10, 11, 12, 10, 9, 10, 11,
     9,  8,  9,  10, 10, 9,  10, 11, 7,  6,  7,  8,  6,  5,  6,  7,  5,  4,  5,  6,  6,  5, 6,  7,
     6,  5,  6,  7,  5,  4,  5,  6,  4,  3,  4,  5,  5,  4,  5,  6,  5,  4,  5,  6,  4,  3, 4,  5,
     3,  2,  3,  4,  4,  3,  4,  5,  10, 9,  10, 11, 9,  8,  9,  10, 8,  7,  8,  9,  9,  8, 9,  10,
     6,  5,  6,  7,  5,  4,  5,  6,  4,  3,  4,  5,  5,  4,  5,  6,  5,  4,  5,  6,  4,  3, 4,  5,
     3,  2,  3,  4,  4,  3,  4,  5,  4,  3,  4,  5,  3,  2,  3,  4,  2,  1,  2,  3,  3,  2, 3,  4,
     9,  8,  9,  10, 8,  7,  8,  9,  7,  6,  7,  8,  8,  7,  8,  9,  5,  4,  5,  6,  4,  3, 4,  5,
     3,  2,  3,  4,  4,  3,  4,  5,  4,  3,  4,  5,  3,  2,  3,  4,  2,  1,  2,  3,  3,  2, 3,  4,
     3,  2,  3,  4,  2,  1,  2,  3,  1,  0,  1,  2,  2,  1,  2,  3},
    {16, 15, 14, 15, 15, 14, 13, 14, 14, 13, 12, 13, 15, 14, 13, 14, 12, 11, 10, 11, 11, 10, 9, 10,
     10, 9,  8,  9,  11, 10, 9,  10, 11, 10, 9,  10, 10, 9,  8,  9,  9,  8,  7,  8,  10, 9,  8, 9,
     10, 9,  8,  9,  9,  8,  7,  8,  8,  7,  6,  7,  9,  8,  7,  8,  12, 11, 10, 11, 11, 10, 9, 10,
     10, 9,  8,  9,  11, 10, 9,  10, 8,  7,  6,  7,  7,  6,  5,  6,  6,  5,  4,  5,  7,  6,  5, 6,
     7,  6,  5,  6,  6,  5,  4,  5,  5,  4,  3,  4,  6,  5,  4,  5,  6,  5,  4,  5,  5,  4,  3, 4,
     4,  3,  2,  3,  5,  4,  3,  4,  11, 10, 9,  10, 10, 9,  8,  9,  9,  8,  7,  8,  10, 9,  8, 9,
     7,  6,  5,  6,  6,  5,  4,  5,  5,  4,  3,  4,  6,  5,  4,  5,  6,  5,  4,  5,  5,  4,  3, 4,
     4,  3,  2,  3,  5,  4,  3,  4,  5,  4,  3,  4,  4,  3,  2,  3,  3,  2,  1,  2,  4,  3,  2, 3,
     10, 9,  8,  9,  9,  8,  7,  8,  8,  7,  6,  7,  9,  8,  7,  8,  6,  5,  4,  5,  5,  4,  3, 4,
     4,  3,  2,  3,  5,  4,  3,  4,  5,  4,  3,  4,  4,  3,  2,  3,  3,  2,  1,  2,  4,  3,  2, 3,
     4,  3,  2,  3,  3,  2,  1,  2,  2,  1,  0,  1,  3,  2,  1,  2},
    {20, 16, 15, 14, 19, 15, 14, 13, 18, 14, 13, 12, 19, 15, 14, 13, 16, 12, 11, 10, 15, 11, 10, 9,
     14, 10, 9,  8,  15, 11, 10, 9,  15, 11, 10, 9,  14, 10, 9,  8,  13, 9,  8,  7,  14, 10, 9,  8,
     14, 10, 9,  8,  13, 9,  8,  7,  12, 8,  7,  6,  13, 9,  8,  7,  16, 12, 11, 10, 15, 11, 10, 9,
     14, 10, 9,  8,  15, 11, 10, 9,  12, 8,  7,  6,  11, 7,  6,  5,  10, 6,  5,  4,  11, 7,  6,  5,
     11, 7,  6,  5,  10, 6,  5,  4,  9,  5,  4,  3,  10, 6,  5,  4,  10, 6,  5,  4,  9,  5,  4,  3,
     8,  4,  3,  2,  9,  5,  4,  3,  15, 11, 10, 9,  14, 10, 9,  8,  13, 9,  8,  7,  14, 10, 9,  8,
     11, 7,  6,  5,  10, 6,  5,  4,  9,  5,  4,  3,  10, 6,  5,  4,  10, 6,  5,  4,  9,  5,  4,  3,
     8,  4,  3,  2,  9,  5,  4,  3,  9,  5,  4,  3,  8,  4,  3,  2,  7,  3,  2,  1,  8,  4,  3,  2,
     14, 10, 9,  8,  13, 9,  8,  7,  12, 8,  7,  6,  13, 9,  8,  7,  10, 6,  5,  4,  9,  5,  4,  3,
     8,  4,  3,  2,  9,  5,  4,  3,  9,  5,  4,  3,  8,  4,  3,  2,  7,  3,  2,  1,  8,  4,  3,  2,
     8,  4,  3,  2,  7,  3,  2,  1,  6,  2,  1,  0,  7,  3,  2,  1},
    {18, 19, 20, 24, 14, 15, 16, 20, 13, 14, 15, 19, 12, 13, 14, 18, 14, 15, 16, 20, 10, 11, 12, 16,
     9,  10, 11, 15, 8,  9,  10, 14, 13, 14, 15, 19, 9,  10, 11, 15, 8,  9,  10, 14, 7,  8,  9,  13,
     12, 13, 14, 18, 8,  9,  10, 14, 7,  8,  9,  13, 6,  7,  8,  12, 14, 15, 16, 20, 10, 11, 12, 16,
     9,  10, 11, 15, 8,  9,  10, 14, 10, 11, 12, 16, 6,  7,  8,  12, 5,  6,  7,  11, 4,  5,  6,  10,
     9,  10, 11, 15, 5,  6,  7,  11, 4,  5,  6,  10, 3,  4,  5,  9,  8,  9,  10, 14, 4,  5,  6,  10,
     3,  4,  5,  9,  2,  3,  4,  8,  13, 14, 15, 19, 9,  10, 11, 15, 8,  9,  10, 14, 7,  8,  9,  13,
     9,  10, 11, 15, 5,  6,  7,  11, 4,  5,  6,  10, 3,  4,  5,  9,  8,  9,  10, 14, 4,  5,  6,  10,
     3,  4,  5,  9,  2,  3,  4,  8,  7,  8,  9,  13, 3,  4,  5,  9,  2,  3,  4,  8,  1,  2,  3,  7,
     12, 13, 14, 18, 8,  9,  10, 14, 7,  8,  9,  13, 6,  7,  8,  12, 8,  9,  10, 14, 4,  5,  6,  10,
     3,  4,  5,  9,  2,  3,  4,  8,  7,  8,  9,  13, 3,  4,  5,  9,  2,  3,  4,  8,  1,  2,  3,  7,
     6,  7,  8,  12, 2,  3,  4,  8,  1,  2,  3,  7,  0,  1,  2,  6},
    {19, 18, 19, 20, 15, 14, 15, 16, 14, 13, 14, 15, 13, 12, 13, 14, 15, 14, 15, 16, 11, 10, 11, 12,
     10, 9,  10, 11, 9,  8,  9,  10, 14, 13, 14, 15, 10, 9,  10, 11, 9,  8,  9,  10, 8,  7,  8,  9,
     13, 12, 13, 14, 9,  8,  9,  10, 8,  7,  8,  9,  7,  6,  7,  8,  15, 14, 15, 16, 11, 10, 11, 12,
     10, 9,  10, 11, 9,  8,  9,  10, 11, 10, 11, 12, 7,  6,  7,  8,  6,  5,  6,  7,  5,  4,  5,  6,
     10, 9,  10, 11, 6,  5,  6,  7,  5,  4,  5,  6,  4,  3,  4,  5,  9,  8,  9,  10, 5,  4,  5,  6,
     4,  3,  4,  5,  3,  2,  3,  4,  14, 13, 14, 15, 10, 9,  10, 11, 9,  8,  9,  10, 8,  7,  8,  9,
     10, 9,  10, 11, 6,  5,  6,  7,  5,  4,  5,  6,  4,  3,  4,  5,  9,  8,  9,  10, 5,  4,  5,  6,
     4,  3,  4,  5,  3,  2,  3,  4,  8,  7,  8,  9,  4,  3,  4,  5,  3,  2,  3,  4,  2,  1,  2,  3,
     13, 12, 13, 14, 9,  8,  9,  10, 8,  7,  8,  9,  7,  6,  7,  8,  9,  8,  9,  10, 5,  4,  5,  6,
     4,  3,  4,  5,  3,  2,  3,  4,  8,  7,  8,  9,  4,  3,  4,  5,  3,  2,  3,  4,  2,  1,  2,  3,
     7,  6,  7,  8,  3,  2,  3,  4,  2,  1,  2,  3,  1,  0,  1,  2},
    {20, 19, 18, 19, 16, 15, 14, 15, 15, 14, 13, 14, 14, 13, 12, 13, 16, 15, 14, 15, 12, 11, 10, 11,
     11, 10, 9,  10, 10, 9,  8,  9,  15, 14, 13, 14, 11, 10, 9,  10, 10, 9,  8,  9,  9,  8,  7,  8,
     14, 13, 12, 13, 10, 9,  8,  9,  9,  8,  7,  8,  8,  7,  6,  7,  16, 15, 14, 15, 12, 11, 10, 11,
     11, 10, 9,  10, 10, 9,  8,  9,  12, 11, 10, 11, 8,  7,  6,  7,  7,  6,  5,  6,  6,  5,  4,  5,
     11, 10, 9,  10, 7,  6,  5,  6,  6,  5,  4,  5,  5,  4,  3,  4,  10, 9,  8,  9,  6,  5,  4,  5,
     5,  4,  3,  4,  4,  3,  2,  3,  15, 14, 13, 14, 11, 10, 9,  10, 10, 9,  8,  9,  9,  8,  7,  8,
     11, 10, 9,  10, 7,  6,  5,  6,  6,  5,  4,  5,  5,  4,  3,  4,  10, 9,  8,  9,  6,  5,  4,  5,
     5,  4,  3,  4,  4,  3,  2,  3,  9,  8,  7,  8,  5,  4,  3,  4,  4,  3,  2,  3,  3,  2,  1,  2,
     14, 13, 12, 13, 10, 9,  8,  9,  9,  8,  7,  8,  8,  7,  6,  7,  10, 9,  8,  9,  6,  5,  4,  5,
     5,  4,  3,  4,  4,  3,  2,  3,  9,  8,  7,  8,  5,  4,  3,  4,  4,  3,  2,  3,  3,  2,  1,  2,
     8,  7,  6,  7,  4,  3,  2,  3,  3,  2,  1,  2,  2,  1,  0,  1},
    {24, 20, 19, 18, 20, 16, 15, 14, 19, 15, 14, 13, 18, 14, 13, 12, 20, 16, 15, 14, 16, 12, 11, 10,
     15, 11, 10, 9,  14, 10, 9,  8,  19, 15, 14, 13, 15, 11, 10, 9,  14, 10, 9,  8,  13, 9,  8,  7,
     18, 14, 13, 12, 14, 10, 9,  8,  13, 9,  8,  7,  12, 8,  7,  6,  20, 16, 15, 14, 16, 12, 11, 10,
     15, 11, 10, 9,  14, 10, 9,  8,  16, 12, 11, 10, 12, 8,  7,  6,  11, 7,  6,  5,  10, 6,  5,  4,
     15, 11, 10, 9,  11, 7,  6,  5,  10, 6,  5,  4,  9,  5,  4,  3,  14, 10, 9,  8,  10, 6,  5,  4,
     9,  5,  4,  3,  8,  4,  3,  2,  19, 15, 14, 13, 15, 11, 10, 9,  14, 10, 9,  8,  13, 9,  8,  7,
     15, 11, 10, 9,  11, 7,  6,  5,  10, 6,  5,  4,  9,  5,  4,  3,  14, 10, 9,  8,  10, 6,  5,  4,
     9,  5,  4,  3,  8,  4,  3,  2,  13, 9,  8,  7,  9,  5,  4,  3,  8,  4,  3,  2,  7,  3,  2,  1,
     18, 14, 13, 12, 14, 10, 9,  8,  13, 9,  8,  7,  12, 8,  7,  6,  14, 10, 9,  8,  10, 6,  5,  4,
     9,  5,  4,  3,  8,  4,  3,  2,  13, 9,  8,  7,  9,  5,  4,  3,  8,  4,  3,  2,  7,  3,  2,  1,
     12, 8,  7,  6,  8,  4,  3,  2,  7,  3,  2,  1,  6,  2,  1,  0}};

//////////////////////////////////////////////
// topval is the topval of an array of values of len in l_capturing()
//////////////////////////////////////////////

unsigned int topval[170] = {
    1,          2,          3,          5,          7,          11,         17,         25,
    38,         57,         86,         129,        194,        291,        437,        656,
    854,        1110,       1443,       1876,       2439,       3171,       3475,       3823,
    4205,       4626,       5088,       5597,       6157,       6772,       7450,       8195,
    9014,       9916,       10907,      11998,      13198,      14518,      15970,      17567,
    19323,      21256,      23382,      25720,      28292,      31121,      34233,      37656,
    41422,      45564,      50121,      55133,      60646,      66711,      73382,      80721,
    88793,      97672,      107439,     118183,     130002,     143002,     157302,     173032,
    190335,     209369,     230306,     253337,     278670,     306538,     337191,     370911,
    408002,     448802,     493682,     543050,     597356,     657091,     722800,     795081,
    874589,     962048,     1058252,    1164078,    1280486,    1408534,    1549388,    1704327,
    1874759,    2062236,    2268459,    2495305,    2744836,    3019320,    3321252,    3653374,
    4018711,    4420582,    4862641,    5348905,    5883796,    6472176,    7119394,    7831333,
    8614467,    9475909,    10423501,   11465851,   12612437,   13873681,   15261050,   16787154,
    18465870,   20312458,   22343706,   24578077,   27035886,   29739474,   32713425,   35984770,
    39583245,   43541573,   47895730,   52685306,   57953837,   63749221,   70124148,   77136564,
    84850228,   93335252,   102668779,  112935659,  124229227,  136652151,  150317384,  165349128,
    181884040,  200072456,  220079703,  242087671,  266296456,  292926096,  322218735,  354440623,
    389884688,  428873168,  471760495,  518936559,  570830240,  627913311,  690704607,  759775136,
    835752671,  919327967,  1011260767, 1112386880, 1223623232, 1345985727, 1480584256, 1628642751,
    1791507135, 1970657856, 2167723648, 2384496256, 2622945920, 2885240448, 3173764736, 3491141248,
    3840255616, 4224281216};

unsigned char l_capturing(unsigned int len)
{
    int bottom = 0;
    int top = 170;
    unsigned char idx = 85;

    while (1) {
        if (idx == 0) {
            return (idx);
        }
        if ((len <= topval[idx]) && (len > topval[idx - 1])) {
            return (idx);
        }
        if (len < topval[idx]) {
            top = idx - 1;
        } else {
            bottom = idx + 1;
        }
        idx = (bottom + top) / 2;
    }
}

int mod_diff(unsigned int x, unsigned int y, unsigned int R)
{
    int dl = 0;
    int dr = 0;
    if (y > x) {
        dl = (int)(y - x);
        dr = (int)(x + R - y);
    } else {
        dl = (int)(x - y);
        dr = (int)(y + R - x);
    }
    return (dl > dr ? dr : dl);
}

///////////////////////////////////////////////////////////////

#ifdef TLSH_DISTANCE_PARAMETERS
static int hist_diff1_add; // default value 1
static int hist_diff2_add; // default value 2
static int hist_diff3_add; // default value 6

static int pairbit_diff(int pairb, int opairb)
{
    int diff = abs(pairb - opairb);
    if (diff == 0) {
        // printf("PBD:	%d\n", diff);
        return (0);
    } else if (diff == 1) {
        // printf("PBD:	diff=%d	%d\n", diff, hist_diff1_add);
        return (hist_diff1_add);
    } else if (diff == 2) {
        // printf("PBD:	diff=%d	%d\n", diff, hist_diff2_add);
        return (hist_diff2_add);
    }
    // printf("PBD:	diff=%d	%d\n", diff, hist_diff3_add);
    return (hist_diff3_add);
}

static int byte_diff(unsigned char bv, unsigned char obv)
{
    int h1 = (unsigned char)bv / 16;
    int oh1 = (unsigned char)obv / 16;
    int h2 = (unsigned char)bv % 16;
    int oh2 = (unsigned char)obv % 16;
    int p1 = h1 / 4;
    int op1 = oh1 / 4;
    int p2 = h1 % 4;
    int op2 = oh1 % 4;
    int p3 = h2 / 4;
    int op3 = oh2 / 4;
    int p4 = h2 % 4;
    int op4 = oh2 % 4;
    int diff = 0;
    diff = diff + pairbit_diff(p1, op1);
    diff = diff + pairbit_diff(p2, op2);
    diff = diff + pairbit_diff(p3, op3);
    diff = diff + pairbit_diff(p4, op4);
    return (diff);
}
///////////////////////////////////////////////////////////////

static int test_distance = 1;
#endif

int h_distance(int len, const unsigned char x[], const unsigned char y[])
{
    int diff = 0;

#ifdef TLSH_DISTANCE_PARAMETERS
    if (test_distance) {
        for (int i = 0; i < len; i++) {
            int dist2 = byte_diff(x[i], y[i]);
            // printf("warning x[%d]=%d y[%d]=%d dist2=%d\n", i, x[i], i, y[i],
            // dist2);
            if ((hist_diff1_add == 1) && (hist_diff2_add == 2) && (hist_diff3_add == 6)) {
                int dist1 = bit_pairs_diff_table[x[i]][y[i]];
                if (dist1 != dist2) {
                    printf(
                        "warning x[%d]=%d y[%d]=%d dist1=%d dist2=%d\n",
                        i,
                        x[i],
                        i,
                        y[i],
                        dist1,
                        dist2);
                }
            }
            diff += dist2;
        }
        return diff;
    }
#endif
    for (int i = 0; i < len; i++) {
        diff += bit_pairs_diff_table[x[i]][y[i]];
    }
    return diff;
}

unsigned char swap_byte(const unsigned char in)
{
    unsigned char byte = 0;
    byte = ((in & 0xF0) >> 4) & 0x0F;
    byte |= ((in & 0x0F) << 4) & 0xF0;
    return byte;
}

void to_hex(unsigned char *psrc, int len, char *pdest)
{
    static unsigned char HexLookup[513] = {"000102030405060708090A0B0C0D0E0F"
                                           "101112131415161718191A1B1C1D1E1F"
                                           "202122232425262728292A2B2C2D2E2F"
                                           "303132333435363738393A3B3C3D3E3F"
                                           "404142434445464748494A4B4C4D4E4F"
                                           "505152535455565758595A5B5C5D5E5F"
                                           "606162636465666768696A6B6C6D6E6F"
                                           "707172737475767778797A7B7C7D7E7F"
                                           "808182838485868788898A8B8C8D8E8F"
                                           "909192939495969798999A9B9C9D9E9F"
                                           "A0A1A2A3A4A5A6A7A8A9AAABACADAEAF"
                                           "B0B1B2B3B4B5B6B7B8B9BABBBCBDBEBF"
                                           "C0C1C2C3C4C5C6C7C8C9CACBCCCDCECF"
                                           "D0D1D2D3D4D5D6D7D8D9DADBDCDDDEDF"
                                           "E0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF"
                                           "F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF"};
    unsigned short *pwHex = (unsigned short *)HexLookup;
    unsigned short *pwDest = (unsigned short *)pdest;

    for (int i = 0; i < len; i++) {
        *pwDest = pwHex[*psrc];
        pwDest++;
        psrc++;
    }
    *((unsigned char *)pwDest) = 0; // terminate the string
}

void from_hex(const char *psrc, int len, unsigned char *pdest)
{
    static unsigned char DecLookup[] = {
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0, // gap before
           // first hex
           // digit
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        1,
        2,
        3,
        4,
        5,
        6,
        7,
        8,
        9, // 0123456789
        0,
        0,
        0,
        0,
        0,
        0,
        0, // :;<=>?@ (gap)
        10,
        11,
        12,
        13,
        14,
        15, // ABCDEF
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0, // GHIJKLMNOPQRS (gap)
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0, // TUVWXYZ[/]^_` (gap)
        10,
        11,
        12,
        13,
        14,
        15 // abcdef
    };

    for (int i = 0; i < len; i += 2) {
        unsigned d = DecLookup[*(unsigned char *)(psrc + i)] << 4;
        d |= DecLookup[*(unsigned char *)(psrc + i + 1)];
        *pdest++ = d;
    }
}

#define RANGE_LVALUE 256
#define RANGE_QRATIO 16

static void
find_quartile(unsigned int *q1, unsigned int *q2, unsigned int *q3, const unsigned int *a_bucket);
static unsigned int partition(unsigned int *buf, unsigned int left, unsigned int right);
static void tlsh_impl_fast_update5(
    TlshImpl *impl, const unsigned char *data, unsigned int len, int tlsh_option);

// Pearson's sample random table
static unsigned char v_table[256] = {
    1,   87,  49,  12,  176, 178, 102, 166, 121, 193, 6,   84,  249, 230, 44,  163, 14,  197, 213,
    181, 161, 85,  218, 80,  64,  239, 24,  226, 236, 142, 38,  200, 110, 177, 104, 103, 141, 253,
    255, 50,  77,  101, 81,  18,  45,  96,  31,  222, 25,  107, 190, 70,  86,  237, 240, 34,  72,
    242, 20,  214, 244, 227, 149, 235, 97,  234, 57,  22,  60,  250, 82,  175, 208, 5,   127, 199,
    111, 62,  135, 248, 174, 169, 211, 58,  66,  154, 106, 195, 245, 171, 17,  187, 182, 179, 0,
    243, 132, 56,  148, 75,  128, 133, 158, 100, 130, 126, 91,  13,  153, 246, 216, 219, 119, 68,
    223, 78,  83,  88,  201, 99,  122, 11,  92,  32,  136, 114, 52,  10,  138, 30,  48,  183, 156,
    35,  61,  26,  143, 74,  251, 94,  129, 162, 63,  152, 170, 7,   115, 167, 241, 206, 3,   150,
    55,  59,  151, 220, 90,  53,  23,  131, 125, 173, 15,  238, 79,  95,  89,  16,  105, 137, 225,
    224, 217, 160, 37,  123, 118, 73,  2,   157, 46,  116, 9,   145, 134, 228, 207, 212, 202, 215,
    69,  229, 27,  188, 67,  124, 168, 252, 42,  4,   29,  108, 21,  247, 19,  205, 39,  203, 233,
    40,  186, 147, 198, 192, 155, 33,  164, 191, 98,  204, 165, 180, 117, 76,  140, 36,  210, 172,
    41,  54,  159, 8,   185, 232, 113, 196, 231, 47,  146, 120, 51,  65,  28,  144, 254, 221, 93,
    189, 194, 139, 112, 43,  71,  109, 184, 209};

#if 0
static unsigned char v_table48[256] = {
    1,  39, 1,  12, 32, 34, 6,  22, 25, 1,  6,  36, 48, 38, 44, 19, 14, 5,  21, 37, 17, 37, 26, 32,
    16, 47, 24, 34, 44, 46, 38, 8,  14, 33, 8,  7,  45, 48, 48, 2,  29, 5,  33, 18, 45, 0,  31, 30,
    25, 11, 46, 22, 38, 45, 48, 34, 24, 48, 20, 22, 48, 35, 5,  43, 1,  42, 9,  22, 12, 48, 34, 31,
    16, 5,  31, 7,  15, 14, 39, 48, 30, 25, 19, 10, 18, 10, 10, 3,  48, 27, 17, 43, 38, 35, 0,  48,
    36, 8,  4,  27, 32, 37, 14, 4,  34, 30, 43, 13, 9,  48, 24, 27, 23, 20, 31, 30, 35, 40, 9,  3,
    26, 11, 44, 32, 40, 18, 4,  10, 42, 30, 0,  39, 12, 35, 13, 26, 47, 26, 48, 46, 33, 18, 15, 8,
    26, 7,  19, 23, 48, 14, 3,  6,  7,  11, 7,  28, 42, 5,  23, 35, 29, 29, 15, 46, 31, 47, 41, 16,
    9,  41, 33, 32, 25, 16, 37, 27, 22, 25, 2,  13, 46, 20, 9,  1,  38, 36, 15, 20, 10, 23, 21, 37,
    27, 44, 19, 28, 24, 48, 42, 4,  29, 12, 21, 48, 19, 13, 39, 11, 41, 40, 42, 3,  6,  0,  11, 33,
    20, 47, 2,  12, 21, 36, 21, 28, 44, 36, 18, 28, 41, 6,  15, 8,  41, 40, 17, 4,  39, 47, 2,  24,
    3,  17, 28, 0,  48, 29, 45, 45, 2,  43, 16, 43, 23, 13, 40, 17,
};
#endif

// Pearson's algorithm
static unsigned char
b_mapping(unsigned char salt, unsigned char i, unsigned char j, unsigned char k)
{
    unsigned char h = 0;

    h = v_table[h ^ salt];
    h = v_table[h ^ i];
    h = v_table[h ^ j];
    h = v_table[h ^ k];
    return h;
}

#if defined BUCKETS_48
    #define fast_b_mapping(ms, i, j, k) (v_table48[v_table[v_table[ms ^ i] ^ j] ^ k])
#else
    #define fast_b_mapping(ms, i, j, k) (v_table[v_table[v_table[ms ^ i] ^ j] ^ k])
#endif

////////////////////////////////////////////////////////////////////////////////////////////

#if SLIDING_WND_SIZE == 5
    #define SLIDING_WND_SIZE_M1 4
#elif SLIDING_WND_SIZE == 4
    #define SLIDING_WND_SIZE_M1 3
#elif SLIDING_WND_SIZE == 6
    #define SLIDING_WND_SIZE_M1 5
#elif SLIDING_WND_SIZE == 7
    #define SLIDING_WND_SIZE_M1 6
#elif SLIDING_WND_SIZE == 8
    #define SLIDING_WND_SIZE_M1 7
#endif

#define RNG_SIZE   SLIDING_WND_SIZE
#define RNG_IDX(i) ((i + RNG_SIZE) % RNG_SIZE)

void tlsh_impl_reset(TlshImpl *impl)
{
    memset(impl, 0x0, sizeof(*impl));
}

int tlsh_impl_update(TlshImpl *impl, const unsigned char *data, unsigned int len, int tlsh_option)
{
    if (impl->lsh_code_valid) {
        fprintf(stderr, "call to update() on a tlsh that is already valid\n");
        return 1;
    }

    unsigned int fed_len = impl->data_len;

#if SLIDING_WND_SIZE == 5
    if (TLSH_CHECKSUM_LEN == 1) {
        tlsh_impl_fast_update5(impl, data, len, tlsh_option);
    #ifndef CHECKSUM_0B
        if ((tlsh_option & TLSH_OPTION_THREADED) || (tlsh_option & TLSH_OPTION_PRIVATE)) {
            impl->lsh_bin.checksum[0] = 0;
        }
    #endif
        return 0;
    }
#endif
    int j = (int)(impl->data_len % RNG_SIZE);

    for (unsigned int i = 0; i < len; i++, fed_len++, j = RNG_IDX(j + 1)) {
        impl->slide_window[j] = data[i];

        if (fed_len >= SLIDING_WND_SIZE_M1) {
            // only calculate when input >= 5 bytes
            int j_1 = RNG_IDX(j - 1);
            int j_2 = RNG_IDX(j - 2);
            int j_3 = RNG_IDX(j - 3);
#if SLIDING_WND_SIZE >= 5
            int j_4 = RNG_IDX(j - 4);
#endif
#if SLIDING_WND_SIZE >= 6
            int j_5 = RNG_IDX(j - 5);
#endif
#if SLIDING_WND_SIZE >= 7
            int j_6 = RNG_IDX(j - 6);
#endif
#if SLIDING_WND_SIZE >= 8
            int j_7 = RNG_IDX(j - 7);
#endif

#ifndef CHECKSUM_0B
            for (int k = 0; k < TLSH_CHECKSUM_LEN; k++) {
                if (k == 0) {
                    //				 b_mapping(0, ... )
                    impl->lsh_bin.checksum[k] = fast_b_mapping(
                        1,
                        impl->slide_window[j],
                        impl->slide_window[j_1],
                        impl->lsh_bin.checksum[k]);
                } else {
                    // use calculated 1 byte checksums to expand the total checksum to 3
                    // bytes
                    impl->lsh_bin.checksum[k] = b_mapping(
                        impl->lsh_bin.checksum[k - 1],
                        impl->slide_window[j],
                        impl->slide_window[j_1],
                        impl->lsh_bin.checksum[k]);
                }
            }
#endif

            unsigned char r;
            //	     b_mapping(2, ... )
            r = fast_b_mapping(
                49, impl->slide_window[j], impl->slide_window[j_1], impl->slide_window[j_2]);
            impl->a_bucket[r]++;
            //	     b_mapping(3, ... )
            r = fast_b_mapping(
                12, impl->slide_window[j], impl->slide_window[j_1], impl->slide_window[j_3]);
            impl->a_bucket[r]++;
            //	     b_mapping(5, ... )
            r = fast_b_mapping(
                178, impl->slide_window[j], impl->slide_window[j_2], impl->slide_window[j_3]);
            impl->a_bucket[r]++;
#if SLIDING_WND_SIZE >= 5
            //	     b_mapping(7, ... )
            r = fast_b_mapping(
                166, impl->slide_window[j], impl->slide_window[j_2], impl->slide_window[j_4]);
            impl->a_bucket[r]++;
            //	     b_mapping(11, ... )
            r = fast_b_mapping(
                84, impl->slide_window[j], impl->slide_window[j_1], impl->slide_window[j_4]);
            impl->a_bucket[r]++;
            //	     b_mapping(13, ... )
            r = fast_b_mapping(
                230, impl->slide_window[j], impl->slide_window[j_3], impl->slide_window[j_4]);
            impl->a_bucket[r]++;
#endif
#if SLIDING_WND_SIZE >= 6
            //	     b_mapping(17, ... )
            r = fast_b_mapping(
                197, this->slide_window[j], this->slide_window[j_1], this->slide_window[j_5]);
            this->a_bucket[r]++;
            //	     b_mapping(19, ... )
            r = fast_b_mapping(
                181, this->slide_window[j], this->slide_window[j_2], this->slide_window[j_5]);
            this->a_bucket[r]++;
            //	     b_mapping(23, ... )
            r = fast_b_mapping(
                80, this->slide_window[j], this->slide_window[j_3], this->slide_window[j_5]);
            this->a_bucket[r]++;
            //	     b_mapping(29, ... )
            r = fast_b_mapping(
                142, this->slide_window[j], this->slide_window[j_4], this->slide_window[j_5]);
            this->a_bucket[r]++;
#endif
#if SLIDING_WND_SIZE >= 7
            //	     b_mapping(31, ... )
            r = fast_b_mapping(
                200, this->slide_window[j], this->slide_window[j_1], this->slide_window[j_6]);
            this->a_bucket[r]++;
            //	     b_mapping(37, ... )
            r = fast_b_mapping(
                253, this->slide_window[j], this->slide_window[j_2], this->slide_window[j_6]);
            this->a_bucket[r]++;
            //	     b_mapping(41, ... )
            r = fast_b_mapping(
                101, this->slide_window[j], this->slide_window[j_3], this->slide_window[j_6]);
            this->a_bucket[r]++;
            //	     b_mapping(43, ... )
            r = fast_b_mapping(
                18, this->slide_window[j], this->slide_window[j_4], this->slide_window[j_6]);
            this->a_bucket[r]++;
            //	     b_mapping(47, ... )
            r = fast_b_mapping(
                222, this->slide_window[j], this->slide_window[j_5], this->slide_window[j_6]);
            this->a_bucket[r]++;
#endif
#if SLIDING_WND_SIZE >= 8
            //	     b_mapping(53, ... )
            r = fast_b_mapping(
                237, this->slide_window[j], this->slide_window[j_1], this->slide_window[j_7]);
            this->a_bucket[r]++;
            //	     b_mapping(59, ... )
            r = fast_b_mapping(
                214, this->slide_window[j], this->slide_window[j_2], this->slide_window[j_7]);
            this->a_bucket[r]++;
            //	     b_mapping(61, ... )
            r = fast_b_mapping(
                227, this->slide_window[j], this->slide_window[j_3], this->slide_window[j_7]);
            this->a_bucket[r]++;
            //	     b_mapping(67, ... )
            r = fast_b_mapping(
                22, this->slide_window[j], this->slide_window[j_4], this->slide_window[j_7]);
            this->a_bucket[r]++;
            //	     b_mapping(71, ... )
            r = fast_b_mapping(
                175, this->slide_window[j], this->slide_window[j_5], this->slide_window[j_7]);
            this->a_bucket[r]++;
            //	     b_mapping(73, ... )
            r = fast_b_mapping(
                5, this->slide_window[j], this->slide_window[j_6], this->slide_window[j_7]);
            this->a_bucket[r]++;
#endif
        }
    }
    impl->data_len += len;
#ifndef CHECKSUM_0B
    if ((tlsh_option & TLSH_OPTION_THREADED) || (tlsh_option & TLSH_OPTION_PRIVATE)) {
        for (int k = 0; k < TLSH_CHECKSUM_LEN; k++) {
            impl->lsh_bin.checksum[k] = 0;
        }
    }
#endif

    return 0;
}

/////////////////////////////////////////////////////////////////////////////
// update for the case when SLIDING_WND_SIZE==5
// have different optimized functions for
//	default TLSH
//	threaded TLSH
//	private TLSH
/////////////////////////////////////////////////////////////////////////////
static void raw_fast_update5(
    // inputs
    const unsigned char *data,
    unsigned int len,
    unsigned int fed_len,
    // outputs
    unsigned int *a_bucket,
    unsigned char *ret_checksum,
    unsigned char *slide_window);

static void raw_fast_update5_private(
    // inputs
    const unsigned char *data,
    unsigned int len,
    unsigned int fed_len,
    // outputs
    unsigned int *a_bucket,
    unsigned char *slide_window);

static void
tlsh_impl_fast_update5(TlshImpl *impl, const unsigned char *data, unsigned int len, int tlsh_option)
{
    if (tlsh_option & TLSH_OPTION_PRIVATE) {
        raw_fast_update5_private(data, len, impl->data_len, impl->a_bucket, impl->slide_window);
        impl->data_len += len;
        impl->lsh_bin.checksum[0] = 0;
    } else {
        raw_fast_update5(
            data,
            len,
            impl->data_len,
            impl->a_bucket,
            &(impl->lsh_bin.checksum[0]),
            impl->slide_window);
        impl->data_len += len;
    }
}

static void raw_fast_update5(
    // inputs
    const unsigned char *data,
    unsigned int len,
    unsigned int fed_len,
    // outputs
    unsigned int *a_bucket,
    unsigned char *ret_checksum,
    unsigned char *slide_window)
{
    int j = (int)(fed_len % RNG_SIZE);
    unsigned char checksum = *ret_checksum;

    unsigned int start_i = 0;
    if (fed_len < SLIDING_WND_SIZE_M1) {
        int extra = SLIDING_WND_SIZE_M1 - fed_len;
        start_i = extra;
        j = (j + extra) % RNG_SIZE;
    }
    for (unsigned int i = start_i; i < len;) {
        // only calculate when input >= 5 bytes
        if ((i >= 4) && (i + 5 < len)) {
            unsigned char a0 = data[i - 4];
            unsigned char a1 = data[i - 3];
            unsigned char a2 = data[i - 2];
            unsigned char a3 = data[i - 1];
            unsigned char a4 = data[i];
            unsigned char a5 = data[i + 1];
            unsigned char a6 = data[i + 2];
            unsigned char a7 = data[i + 3];
            unsigned char a8 = data[i + 4];

            checksum = fast_b_mapping(1, a4, a3, checksum);
            a_bucket[fast_b_mapping(49, a4, a3, a2)]++;
            a_bucket[fast_b_mapping(12, a4, a3, a1)]++;
            a_bucket[fast_b_mapping(178, a4, a2, a1)]++;
            a_bucket[fast_b_mapping(166, a4, a2, a0)]++;
            a_bucket[fast_b_mapping(84, a4, a3, a0)]++;
            a_bucket[fast_b_mapping(230, a4, a1, a0)]++;

            checksum = fast_b_mapping(1, a5, a4, checksum);
            a_bucket[fast_b_mapping(49, a5, a4, a3)]++;
            a_bucket[fast_b_mapping(12, a5, a4, a2)]++;
            a_bucket[fast_b_mapping(178, a5, a3, a2)]++;
            a_bucket[fast_b_mapping(166, a5, a3, a1)]++;
            a_bucket[fast_b_mapping(84, a5, a4, a1)]++;
            a_bucket[fast_b_mapping(230, a5, a2, a1)]++;

            checksum = fast_b_mapping(1, a6, a5, checksum);
            a_bucket[fast_b_mapping(49, a6, a5, a4)]++;
            a_bucket[fast_b_mapping(12, a6, a5, a3)]++;
            a_bucket[fast_b_mapping(178, a6, a4, a3)]++;
            a_bucket[fast_b_mapping(166, a6, a4, a2)]++;
            a_bucket[fast_b_mapping(84, a6, a5, a2)]++;
            a_bucket[fast_b_mapping(230, a6, a3, a2)]++;

            checksum = fast_b_mapping(1, a7, a6, checksum);
            a_bucket[fast_b_mapping(49, a7, a6, a5)]++;
            a_bucket[fast_b_mapping(12, a7, a6, a4)]++;
            a_bucket[fast_b_mapping(178, a7, a5, a4)]++;
            a_bucket[fast_b_mapping(166, a7, a5, a3)]++;
            a_bucket[fast_b_mapping(84, a7, a6, a3)]++;
            a_bucket[fast_b_mapping(230, a7, a4, a3)]++;

            checksum = fast_b_mapping(1, a8, a7, checksum);
            a_bucket[fast_b_mapping(49, a8, a7, a6)]++;
            a_bucket[fast_b_mapping(12, a8, a7, a5)]++;
            a_bucket[fast_b_mapping(178, a8, a6, a5)]++;
            a_bucket[fast_b_mapping(166, a8, a6, a4)]++;
            a_bucket[fast_b_mapping(84, a8, a7, a4)]++;
            a_bucket[fast_b_mapping(230, a8, a5, a4)]++;

            i = i + 5;
            j = RNG_IDX(j + 5);
        } else {
            slide_window[j] = data[i];
            int j_1 = RNG_IDX(j - 1);
            if (i >= 1) {
                slide_window[j_1] = data[i - 1];
            }
            int j_2 = RNG_IDX(j - 2);
            if (i >= 2) {
                slide_window[j_2] = data[i - 2];
            }
            int j_3 = RNG_IDX(j - 3);
            if (i >= 3) {
                slide_window[j_3] = data[i - 3];
            }
            int j_4 = RNG_IDX(j - 4);
            if (i >= 4) {
                slide_window[j_4] = data[i - 4];
            }

            checksum = fast_b_mapping(1, slide_window[j], slide_window[j_1], checksum);
            a_bucket[fast_b_mapping(49, slide_window[j], slide_window[j_1], slide_window[j_2])]++;
            a_bucket[fast_b_mapping(12, slide_window[j], slide_window[j_1], slide_window[j_3])]++;
            a_bucket[fast_b_mapping(178, slide_window[j], slide_window[j_2], slide_window[j_3])]++;
            a_bucket[fast_b_mapping(166, slide_window[j], slide_window[j_2], slide_window[j_4])]++;
            a_bucket[fast_b_mapping(84, slide_window[j], slide_window[j_1], slide_window[j_4])]++;
            a_bucket[fast_b_mapping(230, slide_window[j], slide_window[j_3], slide_window[j_4])]++;
            i++;
            j = RNG_IDX(j + 1);
        }
    }
    *ret_checksum = checksum;
}

static void raw_fast_update5_private(
    // inputs
    const unsigned char *data,
    unsigned int len,
    unsigned int fed_len,
    // outputs
    unsigned int *a_bucket,
    unsigned char *slide_window)
{
    int j = (int)(fed_len % RNG_SIZE);

    unsigned int start_i = 0;
    if (fed_len < SLIDING_WND_SIZE_M1) {
        int extra = SLIDING_WND_SIZE_M1 - fed_len;
        start_i = extra;
        j = (j + extra) % RNG_SIZE;
    }
    for (unsigned int i = start_i; i < len;) {
        // only calculate when input >= 5 bytes
        if ((i >= 4) && (i + 5 < len)) {
            unsigned char a0 = data[i - 4];
            unsigned char a1 = data[i - 3];
            unsigned char a2 = data[i - 2];
            unsigned char a3 = data[i - 1];
            unsigned char a4 = data[i];
            unsigned char a5 = data[i + 1];
            unsigned char a6 = data[i + 2];
            unsigned char a7 = data[i + 3];
            unsigned char a8 = data[i + 4];

            a_bucket[fast_b_mapping(49, a4, a3, a2)]++;
            a_bucket[fast_b_mapping(12, a4, a3, a1)]++;
            a_bucket[fast_b_mapping(178, a4, a2, a1)]++;
            a_bucket[fast_b_mapping(166, a4, a2, a0)]++;
            a_bucket[fast_b_mapping(84, a4, a3, a0)]++;
            a_bucket[fast_b_mapping(230, a4, a1, a0)]++;

            a_bucket[fast_b_mapping(49, a5, a4, a3)]++;
            a_bucket[fast_b_mapping(12, a5, a4, a2)]++;
            a_bucket[fast_b_mapping(178, a5, a3, a2)]++;
            a_bucket[fast_b_mapping(166, a5, a3, a1)]++;
            a_bucket[fast_b_mapping(84, a5, a4, a1)]++;
            a_bucket[fast_b_mapping(230, a5, a2, a1)]++;

            a_bucket[fast_b_mapping(49, a6, a5, a4)]++;
            a_bucket[fast_b_mapping(12, a6, a5, a3)]++;
            a_bucket[fast_b_mapping(178, a6, a4, a3)]++;
            a_bucket[fast_b_mapping(166, a6, a4, a2)]++;
            a_bucket[fast_b_mapping(84, a6, a5, a2)]++;
            a_bucket[fast_b_mapping(230, a6, a3, a2)]++;

            a_bucket[fast_b_mapping(49, a7, a6, a5)]++;
            a_bucket[fast_b_mapping(12, a7, a6, a4)]++;
            a_bucket[fast_b_mapping(178, a7, a5, a4)]++;
            a_bucket[fast_b_mapping(166, a7, a5, a3)]++;
            a_bucket[fast_b_mapping(84, a7, a6, a3)]++;
            a_bucket[fast_b_mapping(230, a7, a4, a3)]++;

            a_bucket[fast_b_mapping(49, a8, a7, a6)]++;
            a_bucket[fast_b_mapping(12, a8, a7, a5)]++;
            a_bucket[fast_b_mapping(178, a8, a6, a5)]++;
            a_bucket[fast_b_mapping(166, a8, a6, a4)]++;
            a_bucket[fast_b_mapping(84, a8, a7, a4)]++;
            a_bucket[fast_b_mapping(230, a8, a5, a4)]++;

            i = i + 5;
            j = RNG_IDX(j + 5);
        } else {
            slide_window[j] = data[i];
            int j_1 = RNG_IDX(j - 1);
            if (i >= 1) {
                slide_window[j_1] = data[i - 1];
            }
            int j_2 = RNG_IDX(j - 2);
            if (i >= 2) {
                slide_window[j_2] = data[i - 2];
            }
            int j_3 = RNG_IDX(j - 3);
            if (i >= 3) {
                slide_window[j_3] = data[i - 3];
            }
            int j_4 = RNG_IDX(j - 4);
            if (i >= 4) {
                slide_window[j_4] = data[i - 4];
            }

            a_bucket[fast_b_mapping(49, slide_window[j], slide_window[j_1], slide_window[j_2])]++;
            a_bucket[fast_b_mapping(12, slide_window[j], slide_window[j_1], slide_window[j_3])]++;
            a_bucket[fast_b_mapping(178, slide_window[j], slide_window[j_2], slide_window[j_3])]++;
            a_bucket[fast_b_mapping(166, slide_window[j], slide_window[j_2], slide_window[j_4])]++;
            a_bucket[fast_b_mapping(84, slide_window[j], slide_window[j_1], slide_window[j_4])]++;
            a_bucket[fast_b_mapping(230, slide_window[j], slide_window[j_3], slide_window[j_4])]++;
            i++;
            j = RNG_IDX(j + 1);
        }
    }
}

/////////////////////////////////////////////////////////////////////////////
// fc_cons_option - a bitfield
//	0	default
//	1	force (now the default)
//	2	conservative
//	4	do not delete a_bucket
/////////////////////////////////////////////////////////////////////////////

/* to signal the class there is no more data to be added */
void tlsh_impl_final(TlshImpl *self, int fc_cons_option)
{
    if (self->lsh_code_valid) {
        fprintf(stderr, "call to final() on a tlsh that is already valid\n");
        return;
    }
#if 0
    // incoming data must more than or equal to MIN_DATA_LENGTH bytes
    if (((fc_cons_option & TLSH_OPTION_CONSERVATIVE) == 0) && (self->data_len < MIN_DATA_LENGTH)) {
        // self->lsh_code be empty
        memset(self->a_bucket, 0x0, sizeof(self->a_bucket));
        return;
    }
    if ((fc_cons_option & TLSH_OPTION_CONSERVATIVE) &&
        (self->data_len < MIN_CONSERVATIVE_DATA_LENGTH)) {
        // self->lsh_code be empty
        memset(self->a_bucket, 0x0, sizeof(self->a_bucket));
        return;
    }
#endif

    unsigned int q1, q2, q3;
    find_quartile(&q1, &q2, &q3, self->a_bucket);

    // issue #79 - divide by 0 if q3 == 0
    if (q3 == 0) {
        memset(self->a_bucket, 0x0, sizeof(self->a_bucket));
        return;
    }

    // buckets must be more than 50% non-zero
    int nonzero = 0;
    for (unsigned int i = 0; i < CODE_SIZE; i++) {
        for (unsigned int j = 0; j < 4; j++) {
            if (self->a_bucket[4 * i + j] > 0) {
                nonzero++;
            }
        }
    }
#if defined BUCKETS_48
    if (nonzero < 18) {
        // printf("nonzero=%d\n", nonzero);
        memset(self->a_bucket, 0x0, sizeof(self->a_bucket));
        return;
    }
#else
    if (nonzero <= 4 * CODE_SIZE / 2) {
        memset(self->a_bucket, 0x0, sizeof(self->a_bucket));
        return;
    }
#endif

    for (unsigned int i = 0; i < CODE_SIZE; i++) {
        unsigned char h = 0;
        for (unsigned int j = 0; j < 4; j++) {
            unsigned int k = self->a_bucket[4 * i + j];
            if (q3 < k) {
                h += 3 << (j * 2); // leave the optimization j*2 = j<<1 or j*2 = j+j for
                                   // compiler
            } else if (q2 < k) {
                h += 2 << (j * 2);
            } else if (q1 < k) {
                h += 1 << (j * 2);
            }
        }
        self->lsh_bin.tmp_code[i] = h;
    }

    if ((fc_cons_option & TLSH_OPTION_KEEP_BUCKET) == 0) {
        memset(self->a_bucket, 0x0, sizeof(self->a_bucket));
    }

    self->lsh_bin.lvalue = l_capturing(self->data_len);
    const unsigned int fixedPointFactor = 100;
    self->lsh_bin.Q.QR.q1ratio = (q1 * fixedPointFactor / q3) % 16;
    self->lsh_bin.Q.QR.q2ratio = (q2 * fixedPointFactor / q3) % 16;
//    self->lsh_bin.Q.QR.q1ratio = (unsigned int)((float)(q1 * 100) / (float)q3) % 16;
//    self->lsh_bin.Q.QR.q2ratio = (unsigned int)((float)(q2 * 100) / (float)q3) % 16;
    self->lsh_code_valid = true;
}

int tlsh_impl_from_tlsh_str(TlshImpl *impl, const char *str)
{
    // Assume that we have 128 Buckets
    int start = 0;
    if (strncmp(str, "T1", 2) == 0) {
        start = 2;
    } else {
        start = 0;
    }
    // Validate input string
    for (int ii = 0; ii < INTERNAL_TLSH_STRING_LEN; ii++) {
        int i = ii + start;
        if (!((str[i] >= '0' && str[i] <= '9') || (str[i] >= 'A' && str[i] <= 'F') ||
              (str[i] >= 'a' && str[i] <= 'f'))) {
            // printf("warning ii=%d str[%d]='%c'\n", ii, i, str[i]);
            return 1;
        }
    }
    int xi = INTERNAL_TLSH_STRING_LEN + start;
    if (((str[xi] >= '0' && str[xi] <= '9') || (str[xi] >= 'A' && str[xi] <= 'F') ||
         (str[xi] >= 'a' && str[xi] <= 'f'))) {
        // printf("warning xi=%d\n", xi);
        return 1;
    }

    tlsh_impl_reset(impl);

    LshBinStruct tmp;
    from_hex(&str[start], INTERNAL_TLSH_STRING_LEN, (unsigned char *)&tmp);

    // Reconstruct checksum, Qrations & lvalue
    for (int k = 0; k < TLSH_CHECKSUM_LEN; k++) {
        impl->lsh_bin.checksum[k] = swap_byte(tmp.checksum[k]);
    }
    impl->lsh_bin.lvalue = swap_byte(tmp.lvalue);
    impl->lsh_bin.Q.qb = swap_byte(tmp.Q.qb);
    for (int i = 0; i < CODE_SIZE; i++) {
        impl->lsh_bin.tmp_code[i] = (tmp.tmp_code[CODE_SIZE - 1 - i]);
    }
    impl->lsh_code_valid = true;

    return 0;
}

const char *hash2(TlshImpl *impl, char *buffer, unsigned int bufSize, bool showvers)
{
    if (bufSize < TLSH_STRING_LEN_REQ + 1) {
        strncpy(buffer, "", bufSize);
        return buffer;
    }
    if (impl->lsh_code_valid == false) {
        strncpy(buffer, "", bufSize);
        return buffer;
    }

    LshBinStruct tmp;
    memset(&tmp, 0x0, sizeof(tmp));
    for (int k = 0; k < TLSH_CHECKSUM_LEN; k++) {
        tmp.checksum[k] = swap_byte(impl->lsh_bin.checksum[k]);
    }
    tmp.lvalue = swap_byte(impl->lsh_bin.lvalue);
    tmp.Q.qb = swap_byte(impl->lsh_bin.Q.qb);
    for (int i = 0; i < CODE_SIZE; i++) {
        tmp.tmp_code[i] = (impl->lsh_bin.tmp_code[CODE_SIZE - 1 - i]);
    }

    if (showvers) {
        buffer[0] = 'T';
        buffer[1] = '0' + showvers;
        to_hex((unsigned char *)&tmp, sizeof(tmp), &buffer[2]);
    } else {
        to_hex((unsigned char *)&tmp, sizeof(tmp), buffer);
    }
    return buffer;
}

/* to get the hex-encoded hash code */
int tlsh_impl_hash(TlshImpl *impl, bool showvers, char *lsh_code,
    size_t lsh_len)
{
    if (lsh_len < TLSH_STRING_LEN_REQ + 1)
        return -1;
    memset(lsh_code, 0, TLSH_STRING_LEN_REQ + 1);
    return (hash2(impl, lsh_code, TLSH_STRING_LEN_REQ + 1, showvers) == NULL? -1: 0);
}

int tlsh_impl_compare(TlshImpl *self, TlshImpl *other)
{
    return (memcmp(&(self->lsh_bin), &(other->lsh_bin), sizeof(self->lsh_bin)));
}

////////////////////////////////////////////
// the default for these parameters is 12
////////////////////////////////////////////

static int length_mult = 12;
static int qratio_mult = 12;

#ifdef TLSH_DISTANCE_PARAMETERS

int hist_diff1_add = 1;
int hist_diff2_add = 2;
int hist_diff3_add = 6;

void set_tlsh_distance_parameters(
    int length_mult_value,
    int qratio_mult_value,
    int hist_diff1_add_value,
    int hist_diff2_add_value,
    int hist_diff3_add_value)
{
    if (length_mult_value != -1) {
        length_mult = length_mult_value;
    }
    if (qratio_mult_value != -1) {
        qratio_mult = qratio_mult_value;
    }
    if (hist_diff1_add_value != -1) {
        hist_diff1_add = hist_diff1_add_value;
    }
    if (hist_diff2_add_value != -1) {
        hist_diff2_add = hist_diff2_add_value;
    }
    if (hist_diff3_add_value != -1) {
        hist_diff3_add = hist_diff3_add_value;
    }
}
#endif

int tlsh_impl_lvalue(TlshImpl *impl)
{
    return (impl->lsh_bin.lvalue);
}

int tlsh_impl_q1ratio(TlshImpl *impl)
{
    return (impl->lsh_bin.Q.QR.q1ratio);
}

int tlsh_impl_q2ratio(TlshImpl *impl)
{
    return (impl->lsh_bin.Q.QR.q2ratio);
}

int tlsh_impl_is_valid(TlshImpl *impl)
{
    return (impl->lsh_code_valid);
}

int tlsh_impl_checksum(TlshImpl *impl, int k)
{
    if ((k >= TLSH_CHECKSUM_LEN) || (k < 0)) {
        return 0;
    }
    return impl->lsh_bin.checksum[k];
}

int tlsh_impl_bucket_value(TlshImpl *impl, int bucket)
{
    int idx;
    int elem;
    unsigned char bv;

    idx = (CODE_SIZE - (bucket / 4)) - 1;
    elem = bucket % 4;
    bv = impl->lsh_bin.tmp_code[idx];
    int h1 = bv / 16;
    int h2 = bv % 16;
    int p1 = h1 / 4;
    int p2 = h1 % 4;
    int p3 = h2 / 4;
    int p4 = h2 % 4;
    if (elem == 0) {
        return (p1);
    }
    if (elem == 1) {
        return (p2);
    }
    if (elem == 2) {
        return (p3);
    }
    return (p4);
}

int tlsh_impl_histogram_count(TlshImpl *impl, int bucket)
{
    return (impl->a_bucket[EFF_BUCKETS - 1 - bucket]);
}

int tlsh_impl_total_diff(TlshImpl *impl, TlshImpl *other, bool len_diff)
{
    int diff = 0;

    if (len_diff) {
        int ldiff = mod_diff(impl->lsh_bin.lvalue, other->lsh_bin.lvalue, RANGE_LVALUE);
        if (ldiff == 0)
            diff = 0;
        else if (ldiff == 1)
            diff = 1;
        else
            diff += ldiff * length_mult;
    }

    int q1diff = mod_diff(impl->lsh_bin.Q.QR.q1ratio, other->lsh_bin.Q.QR.q1ratio, RANGE_QRATIO);
    if (q1diff <= 1)
        diff += q1diff;
    else
        diff += (q1diff - 1) * qratio_mult;

    int q2diff = mod_diff(impl->lsh_bin.Q.QR.q2ratio, other->lsh_bin.Q.QR.q2ratio, RANGE_QRATIO);
    if (q2diff <= 1)
        diff += q2diff;
    else
        diff += (q2diff - 1) * qratio_mult;

    for (int k = 0; k < TLSH_CHECKSUM_LEN; k++) {
        if (impl->lsh_bin.checksum[k] != other->lsh_bin.checksum[k]) {
            diff++;
            break;
        }
    }

    diff += h_distance(CODE_SIZE, impl->lsh_bin.tmp_code, other->lsh_bin.tmp_code);

    return (diff);
}

#define SWAP_UINT(x, y)                                                                            \
    do {                                                                                           \
        unsigned int int_tmp = (x);                                                                \
        (x) = (y);                                                                                 \
        (y) = int_tmp;                                                                             \
    } while (0)

void find_quartile(
    unsigned int *q1, unsigned int *q2, unsigned int *q3, const unsigned int *a_bucket)
{
    unsigned int bucket_copy[EFF_BUCKETS], short_cut_left[EFF_BUCKETS],
        short_cut_right[EFF_BUCKETS], spl = 0, spr = 0;
    unsigned int p1 = EFF_BUCKETS / 4 - 1;
    unsigned int p2 = EFF_BUCKETS / 2 - 1;
    unsigned int p3 = EFF_BUCKETS - EFF_BUCKETS / 4 - 1;
    unsigned int end = EFF_BUCKETS - 1;

    for (unsigned int i = 0; i <= end; i++) {
        bucket_copy[i] = a_bucket[i];
    }

    for (unsigned int l = 0, r = end;;) {
        unsigned int ret = partition(bucket_copy, l, r);
        if (ret > p2) {
            r = ret - 1;
            short_cut_right[spr] = ret;
            spr++;
        } else if (ret < p2) {
            l = ret + 1;
            short_cut_left[spl] = ret;
            spl++;
        } else {
            *q2 = bucket_copy[p2];
            break;
        }
    }

    short_cut_left[spl] = p2 - 1;
    short_cut_right[spr] = p2 + 1;

    for (unsigned int i = 0, l = 0; i <= spl; i++) {
        unsigned int r = short_cut_left[i];
        if (r > p1) {
            for (;;) {
                unsigned int ret = partition(bucket_copy, l, r);
                if (ret > p1) {
                    r = ret - 1;
                } else if (ret < p1) {
                    l = ret + 1;
                } else {
                    *q1 = bucket_copy[p1];
                    break;
                }
            }
            break;
        } else if (r < p1) {
            l = r;
        } else {
            *q1 = bucket_copy[p1];
            break;
        }
    }

    for (unsigned int i = 0, r = end; i <= spr; i++) {
        unsigned int l = short_cut_right[i];
        if (l < p3) {
            for (;;) {
                unsigned int ret = partition(bucket_copy, l, r);
                if (ret > p3) {
                    r = ret - 1;
                } else if (ret < p3) {
                    l = ret + 1;
                } else {
                    *q3 = bucket_copy[p3];
                    break;
                }
            }
            break;
        } else if (l > p3) {
            r = l;
        } else {
            *q3 = bucket_copy[p3];
            break;
        }
    }
}

unsigned int partition(unsigned int *buf, unsigned int left, unsigned int right)
{
    if (left == right) {
        return left;
    }
    if (left + 1 == right) {
        if (buf[left] > buf[right]) {
            SWAP_UINT(buf[left], buf[right]);
        }
        return left;
    }

    unsigned int ret = left, pivot = (left + right) >> 1;

    unsigned int val = buf[pivot];

    buf[pivot] = buf[right];
    buf[right] = val;

    for (unsigned int i = left; i < right; i++) {
        if (buf[i] < val) {
            SWAP_UINT(buf[ret], buf[i]);
            ret++;
        }
    }
    buf[right] = buf[ret];
    buf[ret] = val;

    return ret;
}

static int tlsh_update(TLSH* tlsh, const uint8_t *data, size_t len)
{
    if (data == NULL || len == 0)
        return 0;
    int tlsh_option = 0;
    return (tlsh_impl_update(&tlsh->impl, data, len, tlsh_option) != 0? -1: 0);
}

static int tlsh_final(TLSH* tlsh, const uint8_t *data, size_t len)
{
    if (data != NULL && len > 0 &&
            tlsh_impl_update(&tlsh->impl, data, len, 0x0) != 0)
        return -1;
    tlsh_impl_final(&tlsh->impl, 0x0);
    return 0;
}

static HASH tlsh_hash(TLSH* tlsh)
{
    uint64_t code[4] = {0};
    memcpy(code, tlsh->impl.lsh_bin.tmp_code, CODE_SIZE);
    code[0] ^= code[2];
    code[1] ^= code[3];
    HASH key = 0;
    key |= ((HASH)(code[0] ^ code[2])) << 64;
    key |= ((HASH)(code[1] ^ code[3]));
    return key;
}

static const uint8_t *tlsh_code(TLSH* tlsh)
{
    return tlsh->impl.lsh_bin.tmp_code;
}

static void tlsh_init(TLSH *tlsh)
{
    static bool inited = false;
    static TLSH init;
    if (!inited)
    {
        memset(&init, 0x0, sizeof(init));
        uint8_t tmp[256];
        for (size_t i = 0; i < sizeof(tmp); i++)
            tmp[i] = (int8_t)i;
        tlsh_update(&init, tmp, sizeof(tmp));
        inited = true;
    }
    memcpy(tlsh, &init, sizeof(*tlsh));
}

/****************************************************************************/
/* END TLSH                                                                 */
/****************************************************************************/

/*
 * B-K tree implementation.
 */
typedef HASH KEY;
struct BKNODE;
struct BKCHILD
{
    size_t d;
    BKNODE *child;
    BKCHILD *next;
};
struct BKNODE
{
    KEY key;
    PATCH *patch;
    BKCHILD *child;
};
struct BKTREE
{
    BKNODE *root;
    size_t size;
};

/*
 * Hamming distance.
 */
static size_t bk_distance(KEY K, KEY J)
{
    K ^= J;
    size_t d1, d2;
    asm volatile
    (
        "popcnt %2,%0\n"
        "popcnt %3,%1"
        : "=a"(d1), "=b"(d2)
        : "c"((uint64_t)(K >> 64)), "d"((uint64_t)K)
    );
    return d1 + d2;
}

/*
 * Insert a node into a B-K tree.
 */
static BKNODE *bk_insert(BKNODE **root, KEY K, PATCH *P)
{
    if (*root == NULL)
    {
        BKNODE *node = (BKNODE *)pmalloc(sizeof(BKNODE));
        node->key = K;
        node->child = NULL;
        node->patch = P;
        *root = node;
        return node;
    }
    BKNODE *node = *root;
    size_t d = bk_distance(K, node->key);
    if (d == 0)
        return NULL;
    BKCHILD *curr = NULL, *prev = NULL;
    for (curr = node->child; curr != NULL && d >= curr->d; curr = curr->next)
    {
        if (d == curr->d)
            return bk_insert(&curr->child, K, P);
        prev = curr;
    }
    BKCHILD *child = (BKCHILD *)pmalloc(sizeof(BKCHILD));
    child->d     = d;
    child->child = NULL;
    child->next  = curr;
    if (prev == NULL)
        node->child = child;
    else
        prev->next = child;
    return bk_insert(&child->child, K, P);
}
static void bk_insert(BKTREE *tree, KEY K, PATCH *P)
{
    if (K == 0x0)
        return;
    BKNODE *node = bk_insert(&tree->root, K, P);
    tree->size += (node != NULL? 1: 0);
}

/*
 * Search a B-K tree.
 */
static KEY bk_find(const BKNODE *node, KEY K, size_t max, size_t &n)
{
    if (n == 0 || node == NULL)
        return 0x0;
    n--;

    size_t d = bk_distance(K, node->key);
    if (d <= max)
        return node->key;

    size_t lb = d - max;
    size_t ub = d + max;
    for (const BKCHILD *curr = node->child; n > 0 && curr != NULL;
        curr = curr->next)
    {
        if (curr->d < lb)
            continue;
        if (curr->d > ub)
            break;
        KEY R = bk_find(curr->child, K, max, n);
        if (R != 0x0)
            return R;
    }
    return 0x0;
}
static bool bk_find(const BKTREE *tree, KEY K, size_t max)
{
    if (K == 0x0)
        return false;
    size_t n = tree->size / 16;
    n = MAX(n, 32);
    KEY R = bk_find(tree->root, K, max, n);
    return (R != 0x0);
}

/*
 * Rebuild a B-K tree.
 */
static size_t bk_rebuild(BKNODE *node, BKNODE **root, size_t min)
{
    if (node == NULL)
        return 0;
    size_t size = 0;
    size_t n    = 1024;
    KEY K = bk_find(*root, node->key, min, n);
    bool keep = false;
    if (K == 0x0)
        keep = (bk_insert(root, node->key, node->patch) != NULL);
    if (keep)
        size++;
    else
    {
        // Patch similar to other outputs & not new coverage -> discard
        node->patch->discard = !node->patch->cov;
    }

    BKCHILD *curr = node->child;
    pool_free(pool, (void *)node);
    while (curr != NULL)
    {
        BKCHILD *prev = curr;
        curr = curr->next;
        size += bk_rebuild(prev->child, root, min);
        pool_free(pool, (void *)prev);
    }
    return size;
}
static void bk_rebuild(BKTREE *tree, size_t min)
{
    BKNODE *root = tree->root;
    tree->root = NULL;
    tree->size = bk_rebuild(root, &tree->root, min);
}

/*
 * Program output record.
 */
struct WRITE
{
    static const size_t WINDOW   = 256;
    static const size_t NAME_MAX = 32;

    int port;
    size_t len;
    char name[NAME_MAX];
    uint8_t data[WINDOW];
    TLSH tlsh;

    /*
     * Write data to this record.
     */
    void write(const iovec *iov, size_t iovcnt)
    {
        struct iov_itr_s i0 = IOV_ITR(iov, iovcnt);
        iov_itr_t i = &i0;

        while (len < WINDOW && !iov_itr_end(i))
        {
            data[len++] = iov_itr_get(i);
            iov_itr_inc(i);
        }
        if (iov_itr_end(i))
            return;
        while (!iov_itr_end(i))
        {
            uint8_t x = iov_itr_get(i);
            tlsh_update(&tlsh, &x, 1);
            iov_itr_inc(i);
        }
    }
};

/*
 * Compress program output into a LSH value.
 */
struct OUTPUT
{
    static const int NPORTS = 8;
    
    size_t i = 0;
    WRITE outs[NPORTS];
    uint32_t cov;

    BKTREE good;

    void reset(void)
    {
        cov = 0x0;
        for (int i = 0; i < NPORTS; i++)
            outs[i].port = -1;
    }

    /*
     * Write data to this port.
     */
    void write(const ENTRY *E, const iovec *iov, size_t iovcnt)
    {
        int j = -1, k = -1;
        for (int i = 0; j < 0 && i < NPORTS; i++)
        {
            if (outs[i].port == E->port)
                j = i;
            if (k < 0 && outs[i].port < 0)
                k = i;
        }
        if (j >= 0)
            outs[j].write(iov, iovcnt);
        else if (k >= 0)
        {
            outs[k].port = E->port;
            outs[k].len  = 0;
            outs[k].name[0] = '\0';
            outs[k].name[sizeof(outs[k].name)-1] = '\0';
            if (E->name != NULL)
                strncpy(outs[k].name, E->name, sizeof(outs[k].name)-1);
            tlsh_init(&outs[k].tlsh);
            outs[k].write(iov, iovcnt);
        }
    }

    /*
     * Write coverage.
     */
    void coverage(const uint8_t *map, size_t size)
    {
        uint64_t h = 0x0;
        uint64_t *map64 = (uint64_t *)map;
        for (size_t i = 0; i < size / sizeof(uint64_t); i++)
            h ^= ::hash(map64[i]);
        cov = (uint32_t)h ^ (uint32_t)(h >> 32);
    }

    /*
     * Compress the written data to a LSH.  Also resets.
     */
    HASH hash(const TLSH *input, int status)
    {
        TLSH tlsh;
        memcpy(&tlsh, input, sizeof(tlsh));
        while (true)
        {
            int j = -1;
            for (int i = 0; i < NPORTS; i++)
            {
                if (outs[i].port > 0 && (j < 0 || outs[i].port < outs[j].port))
                    j = i;
            }
            if (j < 0)
                break;
            char hdr[] = "OUT_";
            tlsh_update(&tlsh, (uint8_t *)hdr, sizeof(hdr)-1);
            tlsh_update(&tlsh, (uint8_t *)outs[j].name,
                strlen(outs[j].name)+1);
            tlsh_update(&tlsh, outs[j].data, outs[j].len);
            if (outs[j].len >= WRITE::WINDOW)
            {
                tlsh_final(&outs[j].tlsh, NULL, 0);
                const uint8_t *code = tlsh_code(&outs[j].tlsh);
                tlsh_update(&tlsh, code, CODE_SIZE);
            }
            outs[j].port = -1;
        }
        {
            char hdr[] = "COV_";
            tlsh_update(&tlsh, (uint8_t *)hdr, sizeof(hdr)-1);
            tlsh_update(&tlsh, (uint8_t *)&cov, sizeof(cov));
            cov = 0x0;
        }
        {
            char hdr[] = "RET_";
            tlsh_update(&tlsh, (uint8_t *)hdr, sizeof(hdr)-1);
            tlsh_update(&tlsh, (uint8_t *)&status, sizeof(status));
        }
        tlsh_final(&tlsh, NULL, 0);
        return tlsh_hash(&tlsh);
    }
};

